对面向对象设计原则的理解

对面向对象设计原则的理解

  • 单一职责原则

​       概念: 一个类只应该有一个引起他变化的原因,不要让一个类拥有多种变化的理由。换句话说,一个类只应该完成和一个职责相关的业务,不要让一个类继承过多的职责。粒度的大小根据业务来,一般来说,简单的职责,可以让一个类兼任。复杂职责,必须独立。(高内聚指的就是单一职责原则,一个类职责越单一,内聚度越高)。

​       意思是在面向对象编程过程中,每个对象只需要负责好自己的任务,比如该提供数据的就只是提供数据,该负责提供服务的就只提供服务,这样的开发方式代码耦合较低,较灵活,易扩展。好比对象承担的职责越多,它被复用的可能性就越小,而且一个对象承担的职责过多,就相当于将这些职责关联在一起,当其中一个职责变化时,可能会影响其他职责的动态变化,因此要将这些职责进行分离,从而降低对象的职责负担和关联关系。

  • 开闭原则

​       概念:软件实体应该面向修改关闭,面向扩展开放。其实现的核心是“抽象”。把相同的代码抽象出来,便于重用,这就是“闭”。把不同的代码抽取出来,便于功能的扩展,这就是“开”。开闭原则是设计原则的核心原则,其他设计原则都是开闭原则的体现和补充。

​       简单来说绝大部分的设计模式都有开闭原则,开闭原则要求开发人员可以在不修改系统中现有的功能代码的前提下,而实现对应用系统的软件功能进行扩展。即要求我们应尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。它是为了适应未来的变化而对现有开发设计进行约束的一个原则。开闭原则对扩展开放,对修改关闭,并不意味着我们的代码不能做任何更改,底层模块的变更,必然导致高层模块进行适配调整。一句话总结就是面对需要添加的需求,对程序的改动是通过添加代码进行的,而不是改变原来的代码进行的。

  • 聚合/组合复用原则

​       概念:尽量使用聚合/组合完成代码复用,少用继承复用。继承在java中只能单根继承,不能通过继承实现多个类代码的复用。但是,聚合/组合可以。

​       意思是在面向对象编程中,虽然可以通过继承或者组合/聚合关系,在不同的环境中复用已有的设计和实现,但是使用继承并不是很好。我们可以通过在一个新的对象里面使用一些已有的对象,让它成为新对象的一部分,新的对象通过这些对象来复用已有功能的目的。 这样做的好处是可以使系统更加灵活,降低类与类之间的耦合度,一个类的变化对其他类造成的影响相对较少。总结一句话就是要尽量使用组合,尽量不要使用继承。

  • 迪米特法则

​       概念:软件实体之间应该尽量减少交互,不要因为一个类业务的变化而导致另一个类的变化,不和陌生人说话。

​       简单地说,迪米特法则就是指一个软件实体应当尽可能少的与其他实体发生相互作用。如果其中的一个对象需要调用另一个对象的某一个方法的话,可以通过第三者转发这个调用。这样,当一个模块修改时,就会尽量少的影响其他的模块,扩展会相对容易。

  • 依赖倒置原则

​       概念:面向抽象编程,设计原则不要面向具体编程。尽量使用抽象耦合代替具体耦合。低耦合指的就是依赖倒置原则。

​       意思是在面向对象编程中,原则上高层模块不应该依赖底层模块,二者都应该依赖抽象。抽象不应该依赖细节,细节应该依赖抽象。依赖倒置的中心思想是面向接口编程。通过这些方式相对于细节的多变性,抽象的东西要稳定的多。而且以抽象为基础搭建的架构比以细节为基础搭建的架构要稳定的多。

  • 里氏替换原则

​       概念:父类出现的地方子类一定可以替换,如果父类的方法在子类中不适用,或者在子类中发生了畸变,则应该断开父子关系。父类方法子类无条件继承,很可能导致父类方法在子类中不适用情况。

​       简单来说就是原则上讲子类对象介绍给父类对象,也可以说子类替换父类,并且出现在父类能够出现的任何地方代替父类对象。反过来说,父类对象未必能替换子类对象的。它是用来指导继承关系中子类该如何设计,子类的设计要保证在替换父类的时候,不改变原有程序的逻辑及不破坏原有程序的正确性。理解起来和多态有点类似,但是多态只是面向对象的语法,而里氏替换原则是一种设计原则。

  • 接口隔离原则

​       概念:使用专门的接口比用统一接口好,便于项目组织和分工。不要让开发者面对自己用不到的方法。

​       简单来说就是客户端不应该依赖那些它不需要的接口,一旦一个接口太大,则需要将它分割成一些更细小的接口,使用该接口的客户端仅需知道与之相关的方法即可。接口隔离原则要求我们不要建立功能丰富的庞大接口,使用多个专门的接口来取代一个统一复杂的接口。每一个接口应该承担一种相对独立的角色,不多不少,不干不该干的事,该干的事都要干。在使用接口隔离原则拆分接口时,必须满足单一职责原则。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值