设计模式
2021-11-01 11:07:01 15 举报
AI智能生成
设计模式
作者其他创作
大纲/内容
建造/创建型
单例模式
对某个类只能存在一个对象实例<br>
懒汉式
线程不安全懒汉式
线程安全懒汉式
<br>
同步代码块懒汉式<br>
子主题
饿汉式
静态常量饿汉式
子主题
静态代码块饿汉式
子主题
静态内部类
枚举
子主题
DCL(双重锁机制)<br>
子主题
简单工厂<br>
抽象工厂
建造者<br>
概念
Product
Builder
ConcreteBuilder
Director
注意
客户端不必要知道产品内部的细节,将产品本身与产品的创建过程解耦,使得相同的创建过程可以创建不同的产品对象
每一个具体的建造者都相对独立,而与其他的具体建造者无关<br>,因此可以很方便地替换具体建造者或者增加新的具体建造者。用户使用不同的具体建造者即可获得到不同的产品对象
可以更加精细地控制产品的创建过程
增加新的具体建造者无须修改原有的类库代码
如果产品之间的差异性很大,则不适合使用建造者模式
如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,<br>导致系统变得很庞大,因此在这种情况下,要考虑是否选择建造者模式.
原型模式
深拷贝和浅拷贝
行为型
适配器模式
类适配器
对象适配器<br>
接口适配器
装饰者模式
代理模式
外观模式<br>
桥接模式
组合模式
享元模式<br>
结构型
策略模式
观察模式
责任链模式
备忘模式
模板模式
迭代模式
中介模式
访问模式
解释模式
状态模式
UML基础
基本符号
实体
类<br>
接口
类的关系
依赖(Dependency)
A类使用了B类就是依赖关系<br>
类的成员属性
方法的返回类型
方法接收的参数
方法中使用到<br>
关联(Association)
直线
泛化/继承(Generalization)<br>
是一个依赖关系的特例
A继承B,A和B存在泛化关系
实现(Realization)<br>
是一个依赖关系的特例
接口和实现类的关系
聚合(Aggregation)
聚合是关联关系的一种特例<br>,具有导航性和关联性
整体和部分可以分割<br>
组合(Composition)
整体和部分的关系
整体和部分不可分割<br>
基本原则
1.单一原则
注意事项
降低类的复杂度,<br>一个类只负责一个功能
提高类的可读性,可维护性<br>
降低变更引起的风险<br>
通常情况,我们应当准守单一原则,<br>只有逻辑足够简单,我们才能在代码级违法单一原则;<br>只有类的方法足够少,我们才能在方法级别保持单一原则<br>
2.接口隔离原则<br>
图片
修改前图片
修改后图片
3.依赖倒转原则
相对于细节的多变性,抽象相对稳定的多。<br>以抽象为基础的架构比细节为基础的架构更加的稳定。<br>在Java中抽象指的是接口和抽象类,细节往往指的是具体的实现类<br>
底层模块金亮都要有抽象类或接口,或者两者都有,程序稳定性更好。<br>变量的声明类型金亮是抽象类或接口,这样我们的变量引用和实际对象间,就存在一个缓冲层,利于程序拓展和优化。<br>继承是遵循里氏替换原则<br>
依赖传递的三种方式<br>
接口传递
构造函数
setter
4.里氏替换原则
所有引用基类的地方必须能透明地使用其子类对象
原来的父类和子类都继承一个更通俗的基类,原有的继承关系去掉,采用依赖,聚合,组合等关系代替
5.开闭原则<font color="#c41230">*</font>
6.迪米特原则
基本介绍<br>
一个对象应该对其他对象保持最少的了解
类与类关系月密切,耦合度越大
类对自己依赖的类知道的越少越好
只与直接的朋友通信<br>
每个对象都会与其他的对象有耦合关系,只要两个对象之间的耦合关系,我们就说两个对象直降是朋友关系。<br>耦合的方式很多,依赖,关联,组合,聚合等。其中,我们称出现成员变量,方法参数,方法返回值中的类<br>为直接朋友,而出现在局部变量中的不是直接的朋友。也就是说,陌生的类最好不要以局部变量的形式出现<br>在类的内部。<br>
7.合成复用原则
概要
设计模式不是代码,是某类问题的解决方案
三种类型,23种
提高了软件的维护性,通用性和拓展性,降低复杂程度<br>
0 条评论
下一页