开闭原则
定义:软件实体如(类、模块和函数)应该对扩展开发,对修改关闭
开闭原则可以提高代码复用性,可维护性,并且符合面向对象开发的要求
理解:开闭原则视乎是一个模糊的概念,它只告诉我们对扩展开放,对修改关闭,可是到底如何才能做到对扩展开放,对修改关闭,并没有明确的告诉我们。So,我们可以将它理解为总纲,我们遵循设计模式其他原则,以及使用23种设计模式的目的就是遵循开闭原则。也就是说,只要我们对其它5项原则遵守的好了,设计出的软件自然是符合开闭原则的。
对其他原则的遵守:
对设计原则的遵守不是刻板的遵守他们,而是根据实际情况灵活运用。对他们遵守在合理的范围,就是良好的设计。
设计1、设计2属于良好的设计,他们对六项原则的遵守程度都在合理的范围内;设计3、设计4设计虽然有些不足,但也基本可以接受;
设计5则严重不足,对各项原则都没有很好的遵守;
设计6则遵守过渡了;
设计5和设计6都是迫切需要重构的设计。
如何对其他原则的遵守:
我们以设计一个图书馆项目为例,这是一个新的项目,顾客的需求是借书,还书,图书管理员的需求是管理书籍,对用户账户管理。
单一职责原则:(主要从业务角度分析,建立业务细粒)
业务角度分析,人员分读者,管理员;
读者的行为有借书还书;
读者实体类
书籍实体类
关联表借书
关联表还书
还书又出现逾期的。。。。。。
管理员的行为有管理图书,管理用户
管理员实体类
对图书的行为有增删改查
对用户的行为有冻结解冻通知
冻结关联表。。。。。。。
接口隔离原则:(从系统架构角度分析,建立接口细化)
在业务分析完成后建立接口,以管理员对图书的管理为例;
BookManage中包含增删改查的接口;
依赖倒置原则:
核心思想是面向接口编程遵守接口隔离原则即可实现。
里氏替换原则:
核心是对继承的约束;
1.子类必须实现父类的抽象方法,但不得重写(覆盖)父类的非抽象(已实现)方法。
2.子类中可以增加自己特有的方法。
3.当子类覆盖或实现父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
4.当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。
迪米特原则:
其主要的目的是为了约束类与类之间的关系(依赖,关联,聚合,组合);
原文:https://www.cnblogs.com/jikjk/p/10507782.html