zoukankan      html  css  js  c++  java
  • 面向对象的设计模式

    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 工厂类();

    额.生产();//可以

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

    }

  • 相关阅读:
    织梦后台如何生成站点地图sitemap.xml
    滚轮滚动一定距离触发导航顶部固定,且所点击的关键词,背景字体变色
    超简单横向选项卡
    后台域名重定向301
    JS检测是否是360浏览器
    《深入理解Java虚拟机》-----第2章 Java内存区域与内存溢出异常
    java基础(十七)----- 浅谈Java中的深拷贝和浅拷贝 —— 面试必问
    java基础(十六)----- equals()与hashCode()方法详解 —— 面试必问
    java基础(十五)----- Java 最全异常详解 ——Java高级开发必须懂的
    java基础(十四)-----详解匿名内部类——Java高级开发必须懂的
  • 原文地址:https://www.cnblogs.com/hyp5490-/p/3745255.html
Copyright © 2011-2022 走看看