预备知识:UML和面向对象设计原则

单一职责原则

一个类只读者一个功能领域中的相应职责。核心思想是“高内聚,低耦合”。


开闭原则

一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。

重点:灵活性、扩展性

在很多面向对象编程语言中都提供了接口、抽象类等机制,可以通过它们定义系统的抽象层,再通过具体类来进行扩展。如果需要修改系统的行为,无须对抽象层进行任何改动,只需要增加新的具体类来实现新的业务功能即可,实现在不修改已有代码的基础上扩展系统的功能,达到开闭原则的要求。


里氏代换原则

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

在运用里氏代换原则时,应该将父类设计为抽象类或接口,让子类继承父类或实现父类接口,并实现父类中声明的方法,运行时,子类实例替换父类实例,可以很方便地扩展系统的功能,无须修改原有子类的代码,增加新的功能可以通过增加一个新的子类来实现。


依赖倒转原则

抽象不应该依赖于细节,细节应该依赖于抽象。换言之,要针对接口编程,而不是针对实现编程。

在引入抽象层后,系统将具有很好的灵活性。在程序中尽量使用抽象层进行编程,而将具体类写在配置文件中,这样一来,如果系统行为发生变化,只需要对抽象层进行扩展,并修改配置文件,而无需修改原有系统的源代码,就能扩展系统的功能,满足开闭原则的要求。

在实现依赖倒转原则时,需要针对抽象层编程,而将具体类的对象通过依赖注入的方式注入到其他对象中。依赖注入是指当一个对象要与其他对象发生依赖关系时,通过抽象来注入所依赖的对象。常用的注入方式有3种:构造注入、设置注入和接口注入。这些方法在定义时使用的是抽象类型,在运行时再传入具体类型的对象,由子类对象来覆盖父类对象。


开闭原则是目标,里氏代换原则是基础,依赖倒转原则是手段。


接口隔离原则

使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。

根据接口隔离原则,当一个接口太大时,需要将它分割成一些更小的接口,使用该接口的客户端仅需要知道与之相关的方法即可。(尽量根据不同功能划分接口)


合成复用原则

尽量使用对象组合,而不是继承来达到复用的目的。

两个类之间的关系是“Is-a”,应使用组合或聚合,如果是“has-a”可使用继承。多用关联,少用继承。


迪米特法则

一个软件实体应该尽可能少地与其他实体发生相互作用。

使用迪米特法则可降低系统的耦合度,使类与类之间保持松散的耦合关系。因此要求在设计系统时,应该尽量减少对象之间的交互,如果两个对象之间不必彼此通信,那么这两个对象就不应该发生任何直接的相互作用;如果需要调用另一个对象的方法,可以通过引入第三者转发这个调用,从而降低两个类之间的耦合度。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值