zoukankan      html  css  js  c++  java
  • 设计模式-六大基本原则

    0 六大基本原则

    开闭原则:一个类应该对修改关闭,对扩展开放。意思在于,不允许修改一个类的代码达到扩展,但是可以通过该类的基类派生出新的类达到扩展。

    单一职责原则:一个类应该只有一个职责。意思在于能够引起类变化,也就是类修改的原因只应该有一个。一个类应该尽可能做的小,只包含基本的功能。

    接口隔离原则:派生类继承基类,基类应该只包含单一的职责,才会使得派生类不会有无用的功能。其意思是和单一职责原则几乎一样。

    里氏代换原则:在需要基类的地方,如果将基类替换为他的派生类,那么程序亦然能够正常运行

    依赖倒转原则:A类应该使用一个类的基类作为参数或是关联,这样A类就可以使用该基类或是派生类作为参数或是关联。这几乎就是面向对象中的多态。

    迪米特法则:最小知道原则。意思在于一个类只与有限的类发生直接的联系。

    合成复用原则:意思在于尽可能使用使用关联,然后进行方法转发,而不是继承。

    开闭原则

    开闭原则,指的是,通过通过派生同一个类的方式,达到功能的扩展。而不是修改其中一个类的方式达到功能的拓展。

    2 单一职责原则

    每个类所能够做的事情应该尽可能少,只做必要的事情。

    一个类承担过多的功能,使得类过于臃肿。而且当只需要类的一部分功能的时候,那么另一部分功能就会变得多余。

    接口隔离原则

    与当一职责原则类似,当一个基类,拥有过多的功能,那么其派生类也就继承了这些过多的功能。

    因此需要将接口进行再次分解。也就是说接口隔离原则是从接口的角度来解释单一职责原则

    里氏代换原则

    派生类可以完全的替代基类,那么意味着,基类的方法在派生类可用,因此需要是public继承。

    并且派生类不应该掩盖基类的方法,避免派生类中的方法的重载。

    在编程中,使用最多的是基类只是个接口,并不会有哪些地方真正的使用到基类的方法,更多的是使用派生类,因此这条原则是对基类提出要求,基类接口的设计应该尽可能的合理,使得派生类能够使用相同的向外提供功能。

    开闭原则要求使用新的派生类来扩展功能,而里氏替换原则则要求基类的接口尽可能合理,算的上是开闭原则的一种补充,也就是对基类的要求。

    迪米特法则

    最少知道原则,但是实际上,更合理的名称或是解释,一个类尽可能少的被其他类直接使用。

    多数文章里都会提到一个朋友和陌生人的名词,也就是说,能够直接使用A类的类,是A类的朋友,不能直接使用A类的类是A类的陌生人。迪米特法则指的就是一个实际功能类应该尽可能少的有朋友。

    其实现,新建一个代理类,实际功能类至于这个代理类通信,而需要调用实际功能类的类,都通过代理类的方法进行转发。

    也就是说迪米特法则,要求创建一个代理类来妆发一个实际功能类的方法,加了一层抽象。

    6 依赖倒置原则

    依赖倒置原则指的是在实际功能类A上面加一层抽象类。因此,当功能扩展的时候,可能出现和A类功能一样的类,这时候其他类只要关联或是使用抽象类,就可以避免修改。

    这条原则是开闭原则和里氏替换原则的具体应用。要求使用基类。

    7 合成复用原则

    因为继承是一种高耦合,为了避免高耦合,使用关联的方式来减少耦合。

    也就是说,合成复用原则,与面向对象原则中的继承相背,该原则提议尽可能少的使用继承。

    8 总结

    这几条原则,总结起来可以理解为:

    1. 使用抽象层,达到拓展功能
    2. 使用隔离层,减少与实际功能类的联系
    3. 使用关联,降低耦合
  • 相关阅读:
    【转-整理】win764bit plsql 登录oracle11g ora-12154 问题汇总
    【转-整理】log4j 简单解释,配置
    sparsity and density
    转:Recsys2013论文导读
    学院研究生论坛-如何做研究
    推荐系统开源软件列表
    linux下如何用GDB调试c++程序
    全国大学生数据挖掘邀请赛中的NDCG
    网络科学自学资料
    科普文:从人人网看网络科学(Network Science)的X个经典问题
  • 原文地址:https://www.cnblogs.com/perfy576/p/8547624.html
Copyright © 2011-2022 走看看