00.设计模式总览

参考:https://baijiahao.baidu.com/s?id=1661505290125455712&wfr=spider&for=pc 

概述:

设计模式一般是描述如何组织代码和使用最佳实践来解决常见的设计问题。设计模式是高层次的方案,与具体实现细节无关(如算法,数据结构,网页等)。设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。设计模式让的代码更好重⽤、可读、可靠、可维护、可拓展,解决一系列的复杂问题,提高协作效率。

 

一:设计模式分类

总体来说23种设计模式分为三大类:

创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

创建型模式提供实例化的方法,为适合的状况提供相应的对象创建方法。社会化的分工越来越细,自然在软件设计方面也是如此,因此对象的创建和对象的使用分开也就成为了必然趋势。

因为对象的创建会消耗掉系统的很多资源,所以单独对对象的创建进行研究,从而能够高效地创建对象就是创建型模式要探讨的问题。

结构型模式:这些设计模式关注类和对象的组合继承的概念被用来组合接口和定义组合对象获得新功能的方式。因为如何设计对象的结构、继承和依赖关系会影响到后续程序的维护性、代码的健壮性、耦合性等。

行为型模式:这些设计模式特别关注对象之间的通信。用于在不同的实体间进行通信,为实体之间的通信提供更容易,更灵活的通信方法

二:设计模式的六大原则(slid(过去滑倒)+o)

1、单一原则(Single Responsibility Principle)

一个类只负责一项职责,尽量做到类只有一个行为原因引起变化;

如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱他的设计,当变化发生时,设计会遭受到意想不到的破坏;软件设计真正要做的许多内容就是发现职责并把那些职责相互分离。

2.里氏替换原则(LSP liskov substitution principle)

子类可以扩展父类的功能,但不能改变原有父类的功能;

目的:增强程序的健壮性。实际项目中,每个子类对应不同的业务含义,使父类作为参数,传递不同的子类完成不同的业务逻辑。

3.依赖倒置原则(dependence inversion principle)

面向接口编程;(通过接口作为参数实现应用场景)

依赖于抽象而不依赖于具体。

抽象就是接口或者抽象类,细节就是实现类

依赖倒置原则定义:

上层模块不应该依赖下层模块,两者应依赖其抽象,抽象不应该依赖细节细节应该依赖抽象接口负责定义public属性和方法,并且申明与其他对象依赖关系,抽象类负责公共构造部分的实现,实现类准确的实现业务逻辑。

4.接口隔离(interface segregation principle)

建立单一接口;(扩展为类也是一种接口,一切皆接口)。

使用多个隔离的接口,比使用单个接口要好。还是一个降低类之间的耦合度。

降低依赖,降低耦合。

定义:

客户端不应该依赖它不需要的接口;类之间依赖关系应该建立在最小的接口上;

5.迪米特原则(law of demeter LOD)

最少知道原则,尽量降低类与类之间的耦合;

一个对象应该对其他对象有最少的了解,即一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。

6.开闭原则(open closed principle)

用抽象构建架构,用实现扩展原则;

开闭原则就是说对扩展开放,对修改关闭

一个软件实体通过扩展来实现变化,而不是通过修改原来的代码来实现变化。实现一个热插拔的效果。

开闭原则是对软件实体的未来事件而制定的对现行开发设计进行约束的一个原则。

三:UML图

3.1类图

在UML类图中,类使用包含类名、属性(field) 和方法(method) 且带有分割线的矩形来表示,比如下图表示一个Employee类,它包含name,age和address这3个属性,以及work()方法。

属性/方法名称前加的加号和减号表示了这个属性/方法的可见性,UML类图中表示可见性的符号有三种:

+:表示public

-:表示private

#:表示protected

属性的完整表示方式是: 可见性 名称 :类型 [ = 缺省值]

方法的完整表示方式是: 可见性 名称(参数列表) [ : 返回类型]

                          

 

posted @ 2022-11-27 21:03  冰融心  阅读(48)  评论(0)    收藏  举报