zoukankan      html  css  js  c++  java
  • 开闭原则

    开闭原则

    定义:软件实体如(类、模块和函数)应该对扩展开发,对修改关闭 

    开闭原则可以提高代码复用性,可维护性,并且符合面向对象开发的要求

    理解:开闭原则视乎是一个模糊的概念,它只告诉我们对扩展开放,对修改关闭,可是到底如何才能做到对扩展开放,对修改关闭,并没有明确的告诉我们。So,我们可以将它理解为总纲,我们遵循设计模式其他原则,以及使用23种设计模式的目的就是遵循开闭原则。也就是说,只要我们对其它5项原则遵守的好了,设计出的软件自然是符合开闭原则的。

    对其他原则的遵守:

    对设计原则的遵守不是刻板的遵守他们,而是根据实际情况灵活运用。对他们遵守在合理的范围,就是良好的设计。

     

     

    设计1、设计2属于良好的设计,他们对六项原则的遵守程度都在合理的范围内;设计3、设计4设计虽然有些不足,但也基本可以接受;

    设计5则严重不足,对各项原则都没有很好的遵守;

    设计6则遵守过渡了

    设计5和设计6都是迫切需要重构的设计。

    如何对其他原则的遵守:

    我们以设计一个图书馆项目为例,这是一个新的项目,顾客的需求是借书,还书,图书管理员的需求是管理书籍,对用户账户管理。

    单一职责原则:(主要从业务角度分析,建立业务细粒)

    业务角度分析,人员分读者,管理员;

    读者的行为有借书还书;

    读者实体类

    书籍实体类

    关联表借书

    关联表还书

    还书又出现逾期的。。。。。。

    管理员的行为有管理图书,管理用户

    管理员实体类

    对图书的行为有增删改查

    对用户的行为有冻结解冻通知

    冻结关联表。。。。。。。

    接口隔离原则:(从系统架构角度分析,建立接口细化)

    在业务分析完成后建立接口,以管理员对图书的管理为例;

    BookManage中包含增删改查的接口;

    依赖倒置原则:

    核心思想是面向接口编程遵守接口隔离原则即可实现。

    里氏替换原则:

    核心是对继承的约束;

    1.子类必须实现父类的抽象方法,但不得重写(覆盖)父类的非抽象(已实现)方法。

    2.子类中可以增加自己特有的方法。

    3.当子类覆盖或实现父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。

    4.当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。

    迪米特原则:

    其主要的目的是为了约束类与类之间的关系(依赖,关联,聚合,组合);

  • 相关阅读:
    【转】 MySQL高级知识(一)——基础
    inline元素的间距问题
    ES6对于数组的扩展
    JavaScript的垃圾回收机制
    call() apply() bind()
    防抖和节流
    Promise
    js的事件机制
    Javascript异步操作的异常处理
    JavaScript的事件执行机制及异步
  • 原文地址:https://www.cnblogs.com/jikjk/p/10507782.html
Copyright © 2011-2022 走看看