首页编程java编程java设计模式六大原则?工厂模式的六大原则

java设计模式六大原则?工厂模式的六大原则

编程之家2026-06-051057次浏览

各位老铁们好,相信很多人对java设计模式六大原则都不是特别的了解,因此呢,今天就来为大家分享下关于java设计模式六大原则以及工厂模式的六大原则的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

java设计模式六大原则?工厂模式的六大原则

设计模式六大原则

设计模式六大原则为:单一职责原则、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则。

1、单一职责原则:不要存在多余一个导致类变更的原因,即一个类只负责一个职责。

2、开闭原则:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。

3、里氏替换原则:所有引用基类的地方必须能透明地使用其子类的对象。

4、依赖倒置原则:高层模块不应该依赖低层模块,两者都应该依赖其抽象,抽象不应该依赖细节,细节应该依赖抽象。

5、接口隔离原则:客户端不应该依赖它不需要的接口,一个类对另一个类的依赖应该建立在最小的接口上。

java设计模式六大原则?工厂模式的六大原则

6、迪米特法则:也被称为最少知识原则也可以表述为一个对象应该对其他对象有最少的了解,即一个类应该对自己需要耦合或调用的类知道的最少。

以上内容参考百度百科-设计模式

设计模式六大原则(四)---接口隔离原则

也就是说:接口尽量细化,接口中的方法尽量少

从功能上来看,接口隔离原则和单一职责原则都是为了提高类的内聚,降低类之间的耦合,体现了封装的思想。但二者还是有区别的。

(1)从原则约束来看:接口隔离原则更关注的是接口依赖程度的隔离;而单一职责原则更加注重的是接口职责的划分。

(2)从接口的细化程度来看:单一职责原则对接口的划分更加精细,而接口隔离原则注重的是相同功能的接口的隔离。接口隔离里面的最小接口有时可以是多个单一职责的公共接口。

java设计模式六大原则?工厂模式的六大原则

(3)单一职责原则更加偏向对业务的约束:接口隔离原则更加偏向设计架构的约束。这个应该好理解,职责是根据业务功能来划分的,所以单一原则更加偏向业务;而接口隔离更多是为了“高内聚”,偏向架构的设计。

接口隔离原则是为了约束接口、降低类对接口的依赖性,遵循接口隔离原则有以下 5个优点。

在具体应用接口隔离原则时,应该根据以下几个规则来衡量。

1)接口要尽量小

不能出现Fat Interface;但是要有限度,首先不能违反单一职责原则(不能一个接口对应半个职责)。

2)接口要高内聚

在接口中尽量少公布public方法。

接口是对外的承诺,承诺越少对系统的开发越有利。

3)定制服务

只提供访问者需要的方法。例如,为管理员提供IComplexSearcher接口,为公网提供ISimpleSearcher接口。

4)接口的设计是有限度的

了解环境,拒绝盲从。每个项目或产品都有选定的环境因素,环境不同,接口拆分的标准就不同,需要深入了解业务逻辑。

下面以学生成绩管理为例来说明接口隔离原则:

分析:学生成绩管理程序一般包含查询成绩、新增成绩、删除成绩、修改成绩、计算总分、计算平均分、打印成绩信息等功能,通常我们会怎么做呢?

通常我们设计接口的方式如下:

我们会吧所有的功能都放在一个接口里面.这会产生什么样的问题呢?

首先,接口的方法很多,不利于扩展.比如:学生只有查看成绩,打印成绩单的权限,没有增删改的权限;老师拥有所有的权限.

查询成绩单:

操作成绩单

可以看出问题.查询成绩单,我们只会用到两个方法,可是因为实现了接口,不得不重写所有的方法.

如果这时候增加需求--发送给家长,只有老师才有这个权限,学生没有这个权限.可是,在接口中增加一个抽象方法以后,所有的实现类都要重写这个方法.这就违背了开闭原则.

采用接口隔离原则设计的接口, UML图如下:

我们将原来的一个接口进行了接口拆分.分为查询接口和操作接口.这样学生端就不需要重写和他不相关的接口了.

如果将这些功能全部放到一个接口中显然不太合理,正确的做法是将它们分别放在输入模块、统计模块和打印模块等 3个模块中,其类图如图 1所示

六大设计原则(SOLID)

设计模式的六大原则有:

把这六个原则的首字母联合起来(两个 L算做一个)就是 SOLID(solid,稳定的),其代表的含义就是这六个原则结合使用的好处:建立稳定、灵活、健壮的设计。下面我们来分别看一下这六大设计原则。

一个类应该只有一个发生变化的原因

六大设计原则之单一职责原则(SRP)

一个软件实体,如类、模块和函数应该对扩展开放,对修改关闭

六大设计原则之开闭原则(OCP)

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

六大设计原则之里氏替换原则(LSP)

只与你的直接朋友交谈,不跟“陌生人”说话

其含义是:如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性。

六大设计原则之迪米特法则(LOD)

1、客户端不应该依赖它不需要的接口。

2、类间的依赖关系应该建立在最小的接口上。

注:该原则中的接口,是一个泛泛而言的接口,不仅仅指Java中的接口,还包括其中的抽象类。

六大设计原则之接口隔离原则(ISP)

1、上层模块不应该依赖底层模块,它们都应该依赖于抽象。

2、抽象不应该依赖于细节,细节应该依赖于抽象。

依赖倒置原则(DIP)

参考:

阿里云折扣快速入口

好了,文章到此结束,希望可以帮助到大家。

免费的java资源网站,java资源java编程思想第五版 中文pdf?java编程思想电子书