JAVA设计模式

设计模式介绍

什么是设计模式

是系统设计针对场景的一种解决方案,可以解绝功能逻辑开发中遇到的共性问题。是一种思想。
为了系统功能的扩展,复用,易维护,高效而提供去使用它。不要为了使用设计模式而使用设计模式

设计模式有哪些种类

创建型模式

提供创建对象的机制,提升代码的灵活性和复用性。

结构性模式

介绍将对象和类组成较大的结构,并保持结构的灵活性与高效性

行为模式

负责对象之间的高效沟通等

六大设计原则

单一原则

一个类应该只有一个发生变化的原因。
降低类的复杂度。一个类只负责一项职责,其逻辑肯定要比负责多项职责简单得多。
提高类的可读性。复杂性降低,自然其可读性会提高。
提高系统的可维护性。可读性提高,那自然更容易维护了。
变更引起的风险降低。变更是必然的,如果单一职责原则遵守得好,当修改一个功能时,可以显著降低对其他功能的影响。

例子:我们在买菜的时候,我们有新用户,普通用户,Vip用户,买菜的价格都不同。
没学设计模式我们可以这样通过if else 来判断用户。这样来当我们的需求要求扩展时候,只能在if…else 里面添加,显得非常不可扩展。
学习单一原则我们可以通过定义一个通用的接口,然后不同的用户来实习这个接口的方法,下次某一用户发生变化是,就直接在该类进行扩展。

开闭原则

软件中对象,类,模块,函数对扩展应该是开放的,但是修改应该是封闭的。可以理解成面向抽象编程

可以确保开发和维护的可靠性。该原则是让在增加新功能的同时尽量不修改已有代码。(继承)

几乎任何一款优秀的框架都使用了开闭原则,比如Spring,我们使用Spring的时候不需要修改Spring源代码,就可以集成很多其他框架,增加功能。

里氏替换原则

继承必须确保超类所拥有的性质在子类中成立。任何基类可以出现的地方,子类一定可以出现。
子类可以扩展父类的功能,尽量不能改变父类原有的功能。

里氏替换原则对继承进行了规则上的约束,这种约束主要体现在四个方面:

子类必须实现父类的抽象方法,但不得重写(覆盖)父类的非抽象(已实现)方法。

子类中可以增加自己特有的方法。

当子类覆盖或实现父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。(即只能重载不能重写)

当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。

里氏替换原则的主要作用如下。

里氏替换原则是实现开闭原则的重要方式之一。

它克服了继承中重写父类造成的可复用性变差的缺点。

它是动作正确性的保证。即类的扩展不会给已有的系统引入新的错误,降低了代码出错的可能性。

加强程序的健壮性,同时变更时可以做到非常好的兼容性,提高程序的维护性、可扩展性,降低需求变更时引入的风险。

例:最有名的是“正方形不是长方形”

迪米特法原则(最少知道原则)

一个对象类对于其他对象类来说,知道的越少越好。两个类之间不要有过多的耦合关系,保证最少的关联性。

例:校长,老师,学生。校长只需要管理老师的接口。只需要和学生类保存联系就行。其他的交给老师的接口去获取。

接口隔离原则

客户端不应该被迫依赖于它不使用的方法。(一个类对另一个类应该建立在最小的接口上)
将庞大的接口拆分成更小更具体的方法或者接口。(高内聚,低耦合
接口仅仅提供客户端需要的行为,客户端不需要的行为则隐藏起来,应当为客户端提供尽可能小的接口,而不要提供大的总接口。

依赖倒置原则

高层模块不应该依赖于低层模块,两者都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。
它降耦合,提高系统稳定性,可维护性。代码更让人看懂。


版权声明:本文为dvhj45原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。