JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

设计模式之美(三)- 设计原则,Java工程师必备

wys521 2024-11-02 14:55:11 精选教程 26 ℃ 0 评论


一、单一职责原则(SRP)

1、定义

一个类只负责完成一个职责或者功能。

2、为什么要遵循该原则

为了实现代码高内聚、低耦合,提高代码的复用性、可读性、可维护性。

3、什么时候要用到该原则

类中的代码行数、函数或者属性过多

类依赖的其他类过多,或者依赖类的其他类过多;

私有方法过多;

比较难给类起一个合适的名字;

类中大量的方法都是集中操作类中的某几个属性。

4、一个可量化的标准

一个类的代码行数最好不能超过 200 行,函数个数及属性个数都最好不要超过 10 个。

二、开闭原则(OCP)

1、定义

对扩展开放、对修改关闭;

添加一个新的功能,应该是通过在已有代码基础上扩展代码(新增模块、类、方法、属性等),而非修改已有代码(修改模块、类、方法、属性等)的方式来完成。

2、为什么要遵循该原则

扩展性是代码质量最重要的衡量标准之一。在 23 种经典设计模式中,大部分设计模式都是为了解决代码的扩展性问题而存在的,主要遵从的设计原则就是开闭原则。

3、如何遵循该原则

时刻具备扩展意识、抽象意识、封装意识;

要多花点时间思考,事先留好扩展点,以便在未来需求变更时,在不改动代码整体结构、做到最小代码改动,将新的代码灵活地插入到扩展点上。

4、通常如何提高代码的扩展性

多态、依赖注入、基于接口而非实现编程,以及大部分的设计模式(比如,装饰、策略、模板、责任链、状态)。

三、 里式替换原则(LSP)

1、定义

子类对象能够替换程序中父类对象出现的任何地方,并且保证原来程序的逻辑行为不变及正确性不被破坏。

2、为什么要遵循该原则

可以用来指导继承关系中子类该如何设计,子类的设计要保证在替换父类的时候,不改变原有程序的逻辑及不破坏原有程序的正确性。

3、怎样遵循该原则

子类不能违背父类声明要实现的功能

子类不能违背父类对输入、输出、异常的约定;

子类不能违背父类注释中所罗列的任何特殊说明。

四、接口隔离原则(ISP)

1、定义

接口的调用者或者使用者不应该被强迫依赖它不需要的接口。

2、为什么要遵循该原则

接口是设计时对外部设定的“契约”,通过分散定义多个接口,可以预防外来变更的扩散,提高系统的灵活性和可维护性

3、怎样遵循该原则

接口尽量,但是要适度,接口设计得过大或过小都不好;

为依赖接口的类定制服务,只暴露给调用类需要的方法,不需要的方法则隐藏起来。

五、依赖反转原则(DIP)

1、定义

高层模块不应该依赖低层模块,二者都应该依赖其抽象;

抽象不应该依赖细节;

细节应该依赖抽象。

2、为什么要遵循该原则

可以减少类间的耦合性,提高系统的稳定,降低并行开发引起的风险,提高代码的可读性和可维护性。

3、怎样遵循该原则

依赖接口不要依赖实体类。

六、KISS原则

1、定义

Keep It Simple and Stupid,尽量保持简单。

2、为什么要遵循该原则

保持代码可读和可维护的重要手段。

3、怎样遵循该原则

不要使用同事可能不懂的技术来实现代码;

不要重复造轮子,要善于使用已经有的工具类库;

不要过度优化,牺牲代码的可读性。

七、YAGNI原则

1、定义

You Ain’t Gonna Need It(你不需要它),不要做过度设计。

2、为什么要遵循该原则

可以通过根本就不实现它来达到精简的目标;

软件项目中,大概80%的时间在做20%的功能。

3、怎样遵循该原则

不要去设计当前用不到的功能;

不要去编写当前用不到的代码;

代码可以根据业务留着扩展点,但是无需把还没用到的扩展也实现出来。

八、DRY原则

1、定义

Don’t Repeat Yourself(不用重复你自己),不要写重复的代码。

2、为什么要遵循该原则

提高代码的复用性。

3、怎样遵循该原则

三次原则(Rule of three),即同样的代码将要出现第三次前,考虑抽象它。

4、如何判断是否违反该原则

实现逻辑重复,但功能语义不重复的代码,并不违反 DRY 原则。

实现逻辑不重复,但功能语义重复的代码,也算是违反 DRY 原则。

除此之外,代码执行重复也算是违反 DRY 原则。

九、迪米特法则(LOD)

1、定义

最小知识原则;

每个模块只应该了解那些与它关系密切的模块的有限知识或者说,每个模块只和自己的朋友“说话” ,不和陌生人“说话”。

2、为什么要遵循该原则

降低了类与类之间的耦合度,保证了模块的相对独立;

提高了类的可维护性和可扩展性。

3、怎样遵循该原则

不该有直接依赖关系的类之间,不要有依赖;

有依赖关系的类之间,尽量只依赖必要的接口。

十、设计原则总结

设计原则

区别

目的

单一职责原则

一个类只负责一个职责

提高代码的复用性、可读性、可维护性

开闭原则

对扩展开放,对修改关闭

提高代码的可扩展性

里式替换原则

子类重写方法功能发生改变,不应该影响父类

防止继承泛滥

接口隔离原则

接口要精简单一

提高代码的灵活性和可维护性

依赖反转原则

高层不应该依赖低层,要依赖抽象

提高代码的可读性和可维护性

迪米特法则

最小知道原则

提高代码的可维护性和可扩展性

KISS原则

尽量保持简单

提高代码的可读性和可维护性

YAGNI原则

不要做过度设计

提高代码的可维护性

DRY原则

不要写重复的代码

提高代码的复用性

结论:遵循设计原则能极大的提高代码的高内聚和低耦合,让我们写出来的代码质量更高,在这个内卷的时代,可以让软件工程师们拥有高人一等的能力,是一项必备的知识技能

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表