了解了这么多模式,在学习的过程中也设计到了很多行为模式,至于有哪些?可以一一道来。
行为包括这么多,那么到底什么是行为模式呢?
行为模式是对在不同的对象之间划分责任和算法的抽象化。行为模式不仅仅是关于类和对象的,而且是关于它们之间的相互作用的。可分为类的行为模式和对象的行为模式。
abstract class AbstractClass { public abstract void PrimitOperation1(); //一些抽象行为,放到子类去实现 public abstract void PrimitOperation2(); public void TemplateMethod() //模板方法,给出了逻辑的骨架,而逻辑的组成是一些相应的抽象操作,它们都推迟到子类实现 { PrimitOperation1(); PrimitOperation2(); Console.WriteLine(""); }ConcreteClass,实现父类所定义的一个或多个抽象方法。每一个AbstractClass都可以有任意多个ConcreteClass与之对应,而每一个ConcreteClass都可以给出这些抽象方法的不同实现,从而使得顶级逻辑的实现各有不相同
class ConcreteClassA:AbstractClass { public override void PrimitOperation1() { Console.WriteLine("具体类A方法1实现"); //与ConcreteClassB不同的方法实现 } public override void PrimitOperation2() { Console.WriteLine("具体类A方法2实现"); } }客户端调用:
static void Main(string[] args) { AbstractClass c; c = new ConcreteClassA(); c.TemplateMethod(); Console.Read(); }
static void Main(string[] args) { Handler h1 = new ConcreteHandler1(); //此处有h2和h3…… h1.SetSuccessor(h2); //设置职责链上家与下家 int[] requests = { 2, 5, 12, 17 }; foreach (int request int requests ) //循环给最小处理者提交请求,不同的数额,由不同权限处理者处理 { h1 .HandlerRequest (request); } Console .Read (); }Handler类,处理一个处理请示的接口
abstract class Handler { protected Handler successor; public void SetSuccessor(Handler successor) //设置继任者 { this.successor = successor; } public abstract void HandlerRequest(int request); //处理请求的抽象方法 }具体的处理者对象类
class ConcreteHandler1:Handler { public override void HandlerRequest(int request) { if (request >=0 && request <10) //0到10处理此请求 { Console.WriteLine("{0} 处理请求 {1}", this.GetType().Name, request); } else if (successor !=null ) { successor.HandlerRequest(request); //转移到下一位 } }好处:
原文地址:http://blog.csdn.net/huo065000/article/details/24578431