Java设计模式六大原则

实例分析根据真实情况具体补充,持续更新

单一职责原则

定义

  • 单一职责原则(Single Responsibility principle):一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。

意义

单一职责原则是实现高内聚、低耦合的指导方针

理解

一个类只负责一个职责或者一组总是同时由于相同原因变化的职责。将不同的职责封装在不同的类中,即将不同的变化原因封装在不同的类中。

优点

  1. 降低类的复杂度
  2. 提高类的可读性
  3. 变更类的具体实现功能时更明确

开闭原则

定义

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

关键点

抽象化

理解

当对某个功能进行扩展时,尽量不改动已经存在的代码,只添加新的代码来实现功能的扩展。

优点

使系统拥有较好的适应性、灵活性、稳定性和延续性
降低代码的维护难度

里氏替换原则

定义

里氏代换原则(Liskov Substitution Principle, LSP):
定义一:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型。
定义二:所有引用基类(父类)的地方必须能透明地使用其子类的对象。

名字缘由

这项原则最早是在1988年,由麻省理工学院的一位姓里的女士(Barbara Liskov)提出来的。

意义

是实现开闭原则的重要方式之一、是继承复用的基石

理解

在程序中,将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常。
子类必须实现父类的全部方法。
子类覆盖或实现父类方法时,方法的前置条件(方法的形参)更宽松。(保证父类可以执行的参数子类也可以执行)
子类覆盖或实现父类方法时,方法的后置条件(方法的返回值)更严格。(保证能接受父类返回值的对象也能接受子类的返回值)

依赖倒置原则

定义

依赖倒转原则(Dependency Inversion Principle, DIP):高层模块不应该依赖低层模块,两者都应该依赖抽象。抽象不应该依赖于细节,细节应当依赖于抽象。

Java解读:
模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的。
接口或抽象类不依赖实现类
实现类依赖接口或抽象类

好处

减少类之间的耦合度。

理解

简言之,面向借口编程
在程序代码中传递参数时或在关联关系中,尽量引用层次高的抽象层类,即使用接口和抽象类进行变量类型声明、参数类型声明、方法返回类型声明,以及数据类型的转换等,而不要用具体类来做这些事情。
实现依赖倒转原则时,我们需要针对抽象层编程,将具体类的对象通过依赖注入(DependencyInjection, DI)的方式注入到其他对象中,依赖注入是指当一个对象要与其他对象发生依赖关系时,通过抽象来注入所依赖的对象。常用的注入方式有三种,分别是:构造注入,设值注入(Setter注入)和接口注入。

依赖注入三种方式解读

interface Interfac{
	
}
class InterfacImpl1 implements Interfac{
	
}
class InterfacImpl2 implements Interfac{
	
}
构造注入
class Handle {
	private Interfac interfac;
	public Handle(Interfac interfac) {
		this.interfac = interfac;
	}
}
setter注入
class Handle {
	private Interfac interfac;
	public void setInterfac(Interfac interfac) {
		this.interfac = interfac;
	}
}
接口注入
interface Handle{
	void use(Interfac interfac);
}

分析

开闭原则是目标,里氏代换原则是基础,依赖倒转原则是手段
每个类尽量都有接口或者抽象类,或者抽象类和接口两都具备
变量的表面类型尽量是接口或者抽象类
任何类都不应该从具体类派生
尽量不要覆写基类的方法

接口隔离原则

定义

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

理解

借口隔离原则是对接口进行规范约束

接口的规范约束

接口要尽量小,不要出现臃肿的接口,但是小也是有限度的,不能违背单一职责原则。
接口要高内聚,提高接口,类,模块的处理能力,减少对外的交互。具体到接口隔离原则就是要求在接口中尽量减少公布public方法,接口是对外的承诺,承诺越少对系统开发越有利,变更的风险就越少。
接口设计是有限度的,接口的设计粒度越小,系统越灵活。
一个接口只服务于一个子模块或业务逻辑

迪米特法则

定义

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

优点

减少对象间的耦合性

理解

通过引入一个合理的第三者来降低现有对象之间的耦合度。
在类的划分上,应当尽量创建松耦合的类,类之间的耦合度越低,就越有利于复用,一个处在松耦合中的类一旦被修改,不会对关联的类造成太大波及;
在类的结构设计上,每一个类都应当尽量降低其成员变量和成员函数的访问权限;
在类的设计上,只要有可能,一个类型应当设计成不变类;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值