面向对象的设计原则

1.单一职责原则

     (1)一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中

     (2)例如:JavaWeb的MVC分层,servlet、service、dao

职责分割后:

2.开闭原则定义

     (1)软件实体应当对扩展开放,对修改关闭

     (2)相对稳定的抽象层+灵活的具体层;父类抽象,通过子类来进行扩展,把需要复用的内容抽象出来形成接口

     (3)例如:子类的对象可以覆盖父类的对象,子类的方法可以覆盖父类的方法

       注:只有不更改原来的类文件,修改配置文件和添加新的类文件不算是修改系统

3.里氏代换原则

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

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

    (3)即在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反之则不一定成立

改变后:

4.依赖倒转原则

    (1)高层模块不应该依赖低层模块,它们都应该依赖抽象。抽象不应该依赖细节,细节应该依赖于对象

    (2)要针对接口编程,不要针对实现编程

    (3)在程序代码中传递参数时或在关联关系中,尽量引用层次高的抽象类,即使用接口和抽象类进行变量类型声明、参数

             类型声明、方法返回类型声明,以及数据类型的转换等

    (4)在程序中尽量使用抽象层进行编程,而将具体类写在配置文件中

    (5)针对抽象层编程,将具体类的对象通过依赖注入(DI)的方法注入到其他对象

             其中注入方式有:构造注入、设值注入(Setter注入)、接口注入

5.接口隔离原则(少)

     (1)客户端不应该依赖那些它不需要的接口

     (2)当一个接口太大时,需要将它分割成一些更小的接口

     (3)使用该接口的客户端仅需知道与之相关的方法即可

     (4)每一个接口应该承担一种相对独立的角色,不干不该干的事,该干的事都要干

接口分解后:

5.合成复用原则

    (1)优先使用对象组合,而不是继承来达到复用的目的

    (2)即通过对象来调用某个类的方法,而不是通过继承这个类来得到这个方法(继承将获得父类的所有方法)

    (3)  合成复用原则就是在一个新的对象里通过关联关系(包括组合关系和聚合关系)来使用一些已有的对象,使之成为新对象的一部分

    (4)新对象通过委派调用已有对象的方法达到复用功能的目的

6.迪米特法则

    (1)每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位

    (2)即跟我这个类相关的其它类越少越好,耦合度越低

    (3)应该尽量减少对象之间的交互,如果两个对象之间不必彼此直接通信,那么这两个对象就不应该发生任何直接的相互作用

    (4)如果其中一个对象需要调用另一个对象的方法,可以通过“第三者“(中间类)转发这个调用

       注:该关系类似于权限中的用户和角色的关系,其中角色是"第三者"

错误例子:

修改后:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值