面向对象设计

14 篇文章 0 订阅

面向对象设计的目标

1、可拓展性,容易添加新的功能。
2、灵活性,修改代码时更容易添加新的功能。
3、可插入行,容易将一个类插进去,并且同时将另一个有同样接口的类加进来。

判断软件设计质量的标准

高内聚低耦合

高内聚:在这个类中,自己的里面有很强的相关性代码组成,只负责一项任务,不可分割。
低耦合:在多个类之间,他们的相互联系能力尽量的低,比如去掉一个类,不影响其他功能的正常执行。但是这种不是绝对的互不相干,而是尽量的低,尽量的不要有太多的干涉。

设计基本原则

1.单一职责原则
2.开放—封闭原则
3.里氏替换原则
4.依赖倒置原则
5.接口隔离原则
6.迪米特法则

展开介绍

一、单一职责原则

定义:一个类只负责一个功能领域中的相应职责,或者说,就一个类而言,应该只有一个因其他变化的原因。

体现:高内聚

解释:一个类(大到模块,小到方法),承担的职责越多,被复用性的可能就越小,职责越多的类,类和类之间就容易耦合在一起,,当一个职责发生变化时,其他职责很可能受到影响,因此要将这些职责分离,封装在不同的类中,即不同的变化原因封装在不同的类中,如果多个职责同时发生改变,可以将它封装在同一个类中。

好处
1.降低类的复杂度,一个类只负责一个职责。
2.复杂度低,可读性自然提高。
3.可维护性高,风险低。如果接口的单一职责性好,一个接口的修改只对应相应的实现类的影响,对其他接口无影响,对系统的扩展性,维护性都有帮助。

二、开放—封闭原则

定义:对扩展开放,对修改封闭。

体现:高内聚(对修改封闭),低耦合(对扩展开放)。

解释:软件尽量不在修改源代码的情况下进行修改。

好处:适应性、灵活性、稳定性都比较好。
当已有的软件系统需要新增加功能的时候,在原有的代码上进行附加新的模块就行,新增加的模块对原有的模块完全没有影响或者影响很小,这样就无需对原有的模块进行重新测试。

三、里氏替换原则

定义:子类型必须能够替换他们的基类型

体现:低耦合

解释:就是软件使用了基类(父类),那么把这个基类换成子类,程序不会发生任何变化

好处:可以很容易实现同一父类下子类的互换,客户端毫无察觉。

四、依赖倒置原则(DIP)

定义:依赖于抽象,不要依赖于具体。

体现:低耦合

解释:抽象不应当依赖于细节,细节应当依赖于抽象。要针对接口编程,不要针对现实编程。所有的接口都依赖于接口,而不是依赖于接口的实现。

好处:传统的程序设计,策略依赖于细节,这是糟糕的,因为策略受到细节的影响,依赖倒置原则把细节和策略都依赖于抽象,抽象的稳定性决定了系统的稳定性。策略就是你要完成这个要求要写的方法你用的思路,细节就是这个方法内部具体的实现,把他们这些不确定的因素都归结到确定的抽象当中去,就会提高稳定性。

五、接口隔离原则

定义:使用多个专一功能的接口,总要比使用一个总接口总要好。

体现:高内聚

解释:一个类对另一个类的依懒性应刚建立在最小接口上,就是高内聚写在一个类里面,这个类想要和别的类交互最好通过最小的借口,避免产生堵塞或者耦合低内聚。

好处:一个程序想要增加功能的时候,修改的压力不会传到别的对象那里。

六、迪米特法则

定义:最少知识原则(LKP)

体现:低耦合

解释:对象和对象之间应该尽量使用尽可能少的方法来关联,避免千丝万缕的关联。类访问其他类的方法或者属性应尽量少。

好处:修改程序时,不会因为修改一个类而牵动更多的类。

总结

归根结底面对对象设计就是要满足客户的要求,在增添活着删减功能的时候修改方便,尽量不牵一发而动全身,并且满足这些原则整体代码整洁。
总的来说就是六个字,高内聚低耦合。满足这两点,代码在按照客户需求修改时会很方便,灵活。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值