zoukankan      html  css  js  c++  java
  • 设计模式 (一)

    一、“开放-封闭”原则

        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)讲的是:使用多个专门的接口比使用单一的总接口总要好。换而言之,从一个客户类的角度来讲:一个类对另外一个类的依赖性应当是建立在最小接口上的。

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

  • 相关阅读:
    【CSS学习】--- 背景
    线程运行诊断
    Mysql变量、存储过程、函数、流程控制
    设计模式之外观模式(门面模式)
    Spring的JdbcTemplate使用教程
    @AspectJ注解的value属性
    自定义Yaml解析器替换Properties文件
    @Import导入自定义选择器
    Spring中Bean命名源码分析
    Java操作fastDFS
  • 原文地址:https://www.cnblogs.com/jinweida/p/1118610.html
Copyright © 2011-2022 走看看