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

    一)单一职责原则【Single Responsibility Principle

           单一职责原则:应该有且仅有一个原因引起类的变更。

    (二)里氏替换原则【Liskov Substitution Principle

    里氏替换法则有两种定义:

    (1)如果对每一个类型为 T1 的对象 o1,都有类型为 T2 的对象 o2,使得以 T1 定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型。

    (2)所有引用基类的地方必须能透明地使用其子类的对象。

    我们在类中调用其他类是务必要使用父类或接口,如果不能使用父类或接口,则说明类的设计已经违背了 LSP 原则。

    (三)依赖倒置原则【Dependence Inversion Principle

    依赖倒置原则包含三层含义:

    (1)       高层模块不应该依赖低层模块,两者都应该依赖其抽象。

    (2)       抽象不应该依赖细节。

    (3)       细节应该依赖抽象。

    (四)接口隔离原则【Interf ace Segregation Principle

           接口尽量要小。这是接口隔离原则的核心定义,不出现臃肿的接口(Fat Interface),但是“小”是有限度的,首先就是不能违反单一职责原则。根据接口隔离原则拆分接口时,必须首先满足单一职责原则。

           接口要高内聚。什么是高内聚?高内聚就是提高接口、类、模块的处理能力,减少对外的交互。

           定制服务。一个系统或系统内的模块之间必然会有耦合,有耦合就要相互访问的接口,我们设计时就需要给各个访问者(也就客户端)定制服务。

           接口设计是有限度的。接口的设计粒度是越小系统越灵活,这是不争的事实,但是这就带来的结构的复杂化,开发难度增加,维护性降低,这不是一个项目或产品所期望看到的,所有接口设计一定要注意适度。

    (五)迪米特法则【Low Of Demeter

           迪米特法则(Law of Demeter)又叫作最少知道原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。英文简写为: LoD.。

    狭义的迪米特法则的缺点:

    在系统里造出大量的小方法,这些方法仅仅是传递间接的调用,与系统的商务逻辑无关。

    遵循类之间的迪米特法则会是一个系统的局部设计简化,因为每一个局部都不会和远距离的对象有直接的关联。但是,这也会造成系统的不同模块之间的通信效率降低,也会使系统的不同模块之间不容易协调。

    门面模式和调停者模式实际上就是迪米特法则的应用。

    广义的迪米特法则在类的设计上的体现:

    优先考虑将一个类设置成不变类。

    尽量降低一个类的访问权限。

    谨慎使用Serializable。

    尽量降低成员的访问权限。

     

    (六)开闭原则【Open Close Principle

    关于开放封闭原则,其核心的思想是:

    软件实体应该是可扩展,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。

    因此,开放封闭原则主要体现在两个方面:

    对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。

    对修改封闭,意味着类一旦设计完成,就可以独立完成其工作,而不要对类进行任何修改。

     

     

    规则建议:

    开放封闭原则,是最为重要的设计原则,Liskov替换原则和合成/聚合复用原则为开放封闭原则的实现提供保证。

    可以通过Template Method模式和Strategy模式进行重构,实现对修改封闭、对扩展开放的设计思路。

    封装变化,是实现开放封闭原则的重要手段,对于经常发生变化的状态一般将其封装为一个抽象,例如银行业务中的IBankProcess接口。

    拒绝滥用抽象,只将经常变化的部分进行抽象,这种经验可以从设计模式的学习与应用中获得。

     

  • 相关阅读:
    14.Java基础_函数/函数重载/参数传递
    98. 验证二叉搜索树(深搜)
    13.Java基础_数组内存图
    12Java基础_数组定义格式/动态初始化/静态初始化
    计算几何基础
    11.Java基础_IDEA常用快捷键
    Add Two Numbers
    Two Sum
    登录界面id属性的使用
    系统查看
  • 原文地址:https://www.cnblogs.com/zhxlsuyu/p/3512055.html
Copyright © 2011-2022 走看看