了解了这么多模式,在学习的过程中也设计到了很多行为模式,至于有哪些?可以一一道来。
行为包括这么多,那么到底什么是行为模式呢?
行为模式是对在不同的对象之间划分责任和算法的抽象化。行为模式不仅仅是关于类和对象的,而且是关于它们之间的相互作用的。可分为类的行为模式和对象的行为模式。
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