设计模式 (一)

一、“开放-封闭”原则

    Open-Closed Principle原则讲的是:一个软件实体应当对扩展开放,对修改关闭。

    优点:
    通过扩展已有软件系统,可以提供新的行为,以满足对软件的新的需求,使变化中的软件有一定的适应性和灵活性。
    已有软件模块,特别是最重要的抽象层模块不能再修改,这使变化中的软件系统有一定的稳定性和延续性。
二、里氏代换原则
    子类型(subtype)必须能够替换它们的基类型
三、依赖倒置原则(DIP)

    赖倒置(Dependence Inversion Principle)原则讲的是:要依赖于抽象,不要依赖于具体。

    简单的说,依赖倒置原则要求客户端依赖于抽象耦合。原则表述:

    抽象不应当依赖于细节;细节应当依赖于抽象;
    要针对接口编程,不针对实现编程。

    反面例子:

 

    缺点:耦合太紧密,Light发生变化将影响ToggleSwitch。

    解决办法一:
    将Light作成Abstract,然后具体类继承自Light。

 

    优点:ToggleSwitch依赖于抽象类Light,具有更高的稳定性,而BulbLight与TubeLight继承自Light,可以根据"开放-封闭"原则进行扩展。只要Light不发生变化,BulbLight与TubeLight的变化就不会波及ToggleSwitch。

    缺点:如果用ToggleSwitch控制一台电视就很困难了。总不能让TV继承自Light吧。

    解决方法二:
 

    优点:更为通用、更为稳定。

    结论:
    使用传统过程化程序设计所创建的依赖关系,策略依赖于细节,这是糟糕的,因为策略受到细节改变的影响。依赖倒置原则使细节和策略都依赖于抽象,抽象的稳定性决定了系统的稳定性。
四、接口隔离原则(ISP)
    接口隔离原则(Interface Segregation Principle)讲的是:使用多个专门的接口比使用单一的总接口总要好。换而言之,从一个客户类的角度来讲:一个类对另外一个类的依赖性应当是建立在最小接口上的。

    过于臃肿的接口是对接口的污染。不应该强迫客户依赖于它们不用的方法。

posted @ 2008-03-23 17:41  jinweida  阅读(191)  评论(0编辑  收藏  举报