• 面向对象的设计模式


    1:开闭原则OPC

      一个软件实体应当对扩展开放,对修改关闭。再设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展。

    例子:

         车类 里有名字 发动机  发动机应当拿出另写一个类

    2:单一职责原则SRP

      就一个类而言,应该仅有一个引起它变化的原因,在构造对象时,应将对象的不同职责分离至多个类中,从而确保引起该类变化的原因只有一个。此原则课提高内聚,降低耦合度。

    例子:

       文档类{

         内容();

        打印();

    }

    打印分很多种,文档内容改变和打印方法改变,都会引起文档类的变化。

    可用组合:

    文档类{

    内容();

    打印类;

    }

    打印接口{

    打印();

    }

    细节打印类1 实现 打印接口{

    打印(){}

    }

    细节打印类2 实现 打印接口{

    打印(){}

    }

    3,里氏替换原则LSP

     若对每个类S的对象O1,都存在一个类T的对象O2,使得在所有针对T编写的程序P中,用O1替换O2后,程序P行为功能不变,则S是T的子类。该原则的具体应用体现在继承关系上,在实现继承时,子类必须能替换掉他们的基类。如果软件中使用的事基类的话那么也一定可以使用其子类,但是反过来代换则可以不成立。即两个类不构成继承关系。

    例子:

    长方形类{

    长;

    宽;

    get set 方法

    }

    正方形类  继承 长方形类{

    // 长宽相等 

    set  get  方法

    //破坏了长方形的思想

    }

     4,依赖倒置原则DIP  

        高层模块不应该依赖于底层模块,两者都应该依赖于抽象,抽象不应该依赖于细节,细节应该依赖于抽象。在模块编程中要依赖于抽象编程,不要依赖于具体细节编程,即针对接口编程,不要针对具体实现编程。

    例子:

    ArrayList<String> lista = new Arraylist<String>();

    List<String> listb = new List<String>();

    如果以后要使用另外一种LIst实现类,则lista这个变量就无法工作啦,而listb还可以正常使用。

    5,接口隔离原则ISP

    不要强迫客户依赖于他们不需要的方法,应用接口将两者隔离。

    在具体的编程过程中一个类对另外一个类的依赖性应当是建立在最小的接口上的,如果客户端只需要某一些方法的话,那么就应当向客户端提供这些需要的方法,而不要提供不需要的方法。提供接口意味着向客户端作出承诺,过多的承诺会给系统的维护造成不必要的负担。提供接口的另一个意图是安全性,比如一个论坛系统中普通用户就无法获得一个用户的密码,而管理员就可以,这就对两者做了接口的隔离。

    例子:

    工厂类 实现 生产接口 , 消费接口{

    生产(){};

    消费(){};

    }

    接口 生产{

    生产();

    接口 消费{

    消费();

    }

    main 方法{

    消费者 啊 = new 工厂类();

    啊.消费();//可以

    啊.生产();//不可以

    生产者 额 = new 工厂类();

    额.生产();//可以

    额.消费();//不可以

    }

  • 相关阅读:
    系统运行性能监控日志
    iptables 操作
    访问dubbo没有权限,通过ip进行跳转服务器,并通过有权限服务器代理访问
    乐观锁
    ES的优化布局
    Docker壳的配置笔记
    expect 实现iterm2自动加载pem登录跳板机
    mybaits-spring demo 记
    Java中volatile修饰符,不稳定标记的用法笔记
    用intellj 建一个spring mvc 项目DEMO
  • 原文地址:https://www.cnblogs.com/hyp5490-/p/3745255.html
Copyright © 2020-2023  润新知