责任链模式属于行为型设计模式中的一种。责任链模式避免将发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并沿着这条链传递请求,直到有对象处理为止。 Handler:传递者接口,定义一个处理请求的接口;实现链中下一个对象(可选)ConcreteHandler:具体传递者,处理它所负责的请求;可以访问链中下一个对象,如果可以处理请求就处理它,否则将请求传递给下一个对象。Client:客户端应用程序。 实际生活中的例子:员工请假,部门经理可以批3天以下的假期,中心总监可批5天以下的假期,副总裁可批10天以下的假期,CEO可以批20天以下假期,超过20天需要开会决定。示例: // “Handler” //传递者抽象类 abstract class Handler { protected Handler successor; //维护它的下一个处理对象 public void SetSuccessor(Handler successor) { this.successor = successor; } //处理方法 public abstract void HandleRequest(int request); } 具体传递者 // 部门经理 class ConcreteHandler1 : Handler { public override void HandleRequest(int request) { if (request >= 0 && request <= 3) { Console.WriteLine(” {1} [...]
Browsing the archives for the 设计模式 tag
Strategy策略模式是属于设计模式中对象行为型模式,主要是定义一系列的算法,把这些算法一个个封装成单独的类.它的UML图 Strategy是一个策略类,其中定义一个或多个算法接口ConcreteStrategy是实现算法接口的具体策略类Context是上下文应用 比如,我要从龙阳路去浦东国际机场,我可以选择坐公交、可以选择打车、可以选择坐磁悬浮。这里的乘车方式就是一个可变的,因此独立为一接口如策略接口 public interface IToAerodrome { void ToDo(); } 实现该接口(算法)的具体类 public class ByBus : IToAerodrome { #region IToAerodrome 成员 public void ToDo() { Console.WriteLine(“乘坐公交车去机场”); } #endregion } public class ByTaxi : IToAerodrome { #region IToAerodrome 成员 public void ToDo() { Console.WriteLine(“我乘坐出租车去机场”); } #endregion } public class ByTrain : IToAerodrome { #region IToAerodrome 成员 public [...]