zoukankan      html  css  js  c++  java
  • 设计模式之禅(1)-设计准则

      最近几周一直都在看设计模式之禅,看的过程当中,发现大多数的设计模式在平时编码过程当中使用到了,当时没意识到这就是设计模式的一种,翻看自己以前的代码,有些设计显然和设计模式的标准有出入,但是个人认为设计模式只是6大设计准则的具体标准实现。在具体项目中,应当灵活的根据设计准则设计出灵活的代码。只要代码扩展度高,复杂度低,这就是个好设计。但同时,6大设计准则和23大设计模式我们也要了然于心,好的程序猿的每一行代码都应是一个很好的设计。

     

     6大设计原则


     

    1.单一职责:(SRP)

    一个方法尽量只做一件事,一类只能因为一个原因发起变更。但是在实际的项目中,类的职责划分是比较难有清晰的界限的,一些好的设计往往会违背单一职责。

    里氏替换原则

    为继承定义了一个规范:

    1. 子类必须完全实现父类的方法
    2. 子类可以有自己的特性
    3. 重载或者重写父类方法时输入参数可以被放大
    4. 重载或者重写父类方法时输出结果可以缩小
    

    依赖倒置原则

    1. 高层模块不依赖于底层模块,两者都依赖于抽象
    2. 抽象不依赖于细节
    3. 细节依赖抽象
    

    底层模块:不可分割的原子逻辑

    高层模块:多个底层模块组成合成

    在Java中更为精简的定义就是:面向接口编程,模块直接的依赖通过抽象发生,实现类之间不直接发生依赖关系,

    举一个反例:司机开车,下图是司机开奔驰车,如果司机现在换了一辆宝马车,这个类图的改动就比较大了

     

    如果更具依赖倒置原则,合理的类图应当如下

    接口隔离原则

    接口职责清晰,不要一个接口一堆方法,尽量一个接口只服务一个模块。

    迪米特法则

    也被称之为最少知识原则,不要对外公布自己的太多细节,尽量不要有太多的public属性,对外只公布一个public方法,保障自己的属性在自己的控制范围之内。

    开闭原则

    对扩展开放,对修改关闭。细致来说:如果代码需要有变动,应当通过扩展来实现变动,尽量不修改已有的代码


    转载请注明来源:http://www.cnblogs.com/xmzJava/p/9013364.html

  • 相关阅读:
    java持续添加内容至本地文件
    ArrayList与LinkedList的区别,如何减少嵌套循环的使用
    linux系统设置允许密码登录
    postgreSQL格式化时间的函数详解
    POSTGRESQL日期函数大全
    RESTful API规范
    ASP.NET Core实践:ABP模块化&统一返回结果
    ASP.NET Core实践:中间件
    Salesforce经历
    Git常用命令整理
  • 原文地址:https://www.cnblogs.com/xmzJava/p/9013364.html
Copyright © 2011-2022 走看看