zoukankan      html  css  js  c++  java
  • 类的设计原则

    刚接触设计模式的时候我就被它的优雅给吸引了,发现原来代码还可以这样写,当时的我入了迷。

    记得看的第一本设计模式的书籍叫《大话设计模式》,当时的我还不能完全理解里面的思想,但并不妨碍我被它的优雅给吸引,

    这本书我看了3遍,直到现在感觉还是有点乱,在这整理一下自己的思路,加深一下自己的理解。

    类的设计原则:


    开闭原则:在面对对象设计的中,应该遵循对扩展开放,对修改关闭。

    开闭原则实现方法:

    为了满足开闭原则,我们这软件设计中应该将不变的部分抽象出来,定义成不变的接口(或抽象类),模块之间调用通过抽象接口进行,这样即使实现层发生变化,

    调用代码也不需要改变,接口是不变的是可以复用的,简单的说就是基于接口(抽象)编程


    单一职责原则:在类的设计过程中,只能让一个类有且只有一个职责。

    为什么一个类不能多余一个以上的职责?

    当一个类拥有多个职责的时候,也就意味着有多个原因会引起该类的改变,而这种变化会影响到该类不同职责的使用者:

    1.当类的一个职责需要包含其他外部类的时候,该类的另外一个职责的使用者就不得不保函这个外部类

    2.当类的一个职责改变,而该类的另外一个职责的使用者也不得不重新编译这个类

    职责划分

    单一职责其实从字面去理解非常容易,但在实际的设计过程中,并不是那么容易对职责进行划分。

    首先我尝试用一句话来概括这个类的职责,在语句中不要包括或、且、和之类的字眼,然后考虑这个类是否存在多个原因引起他的改变


    接口分离原则:接口的设计应该遵循最小接口原则,不要把用户不需要的方法放到同一个接口里


    依赖倒置原则:高级模块不应该依赖低级模块,应该依赖抽象,抽象不应该依赖于细节,细节应该依赖抽象


    里氏替换原则:子类应该可以替换掉父类出现的任何地方,或者说我们将代码中所有出现父类的地方替换成子类,代码仍然可以正常运行

  • 相关阅读:
    NLTK和Stanford NLP两个工具的安装配置
    对传统虚拟机软件的相关调研
    FasterRCNN目标检测实践纪实
    MySQL数据库远程连接的配置方案
    Windows10电脑安装macOS Mojave系统的方法(最新版系统,含超详细步骤截图)
    用Hash Table(哈希散列表)实现统计文本每个单词重复次数(频率)
    Windows10远程桌面连接配置
    dwz局部表格分页
    dwz中combox的value问题
    【转帖】C++编译原理 资料
  • 原文地址:https://www.cnblogs.com/xiaodo0/p/3892562.html
Copyright © 2011-2022 走看看