设计模式
2022-04-18 11:05:19 0 举报
AI智能生成
java24种设计模式
作者其他创作
大纲/内容
一个类负责一项职责
单一职责原则【SINGLE RESPONSIBILITY PRINCIPLE】
有引用父类的地方,一定也可以替换为其子类
里氏替换原则【LISKOV SUBSTITUTION PRINCIPLE】
高层模块不应该依赖低层模块,二者都应该依赖其抽象
细节应该依赖抽象
依赖倒置原则【DEPENDENCE INVERSION PRINCIPLE】
建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少
接口隔离原则【INTERFACE SEGREGATION PRINCIPLE】
最小化、简单化模块间的通信,并达到松耦合的目的
低耦合,高内聚
迪米特法则【LOW OF DEMETER】
不应该修改老代码,应该写新代码
对扩展开放,对修改关闭
开闭原则【OPEN CLOSE PRINCIPLE】
尽量使用组合和聚合少使用继承的关系来达到复用的原则
组合/聚合复用原则【Composition/Aggregation Reuse Principle(CARP) 】
7个原则
即针对接口编程,不要针对实现编程
6种实现方式
单例
在创建一个对象时不向客户暴露内部细节,并提供一个创建对象的通用接口
简单工厂
定义了一个创建对象的接口,但由子类决定要实例化哪个类。工厂方法把实例化操作推迟到子类
工厂方法
抽象工厂
封装一个对象的构造过程,并允许按步骤构造
生成器
使用原型实例指定要创建对象的类型,通过复制这个原型来创建新对象
原型模式
创建型
外观
最少知识原则
把一个类接口转换成另一个用户需要的接口
适配器
JDBC
将抽象与实现分离开来,使它们可以独立变化
桥接
将对象组合成树形结构来表示“整体/部分”层次关系,允许用户以相同的方式处理单独对象和组合对象
组合
java.awt.Container#add(Component)java.util.Map#putAll(Map)java.util.List#addAll(Collection)
JDK
为对象动态添加功能
装饰器
利用共享的方式来支持大量细粒度的对象,这些对象一部分内部状态是相同的。
享元
java.lang.Integer#valueOf(int) java.lang.Boolean#valueOf(boolean) java.lang.Byte#valueOf(byte) java.lang.Character#valueOf(char)
Java 利用缓存来加速大量小对象的访问时间
控制对其它对象的访问
代理
结构型
java.io.BufferedInputStream(InputStream) java.io.DataInputStream(InputStream) java.io.BufferedOutputStream(OutputStream) java.util.zip.ZipOutputStream(OutputStream) java.util.Collections#checkedList|Map|Set|SortedSet|SortedMap
类应该对扩展开放,对修改关闭
javax.servlet.Filter#doFilter()
使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链发送该请求,直到有一个对象处理它为止
责任链
定义一系列算法,封装每个算法,并使它们可以互换
策略
定义算法框架,并将一些步骤的实现延迟到子类
模板
java.lang.Runnable
将命令封装成对象中,以便使用命令来参数化其它对象,或者将命令对象放入队列中进行排队,或者将命令对象的操作记录到日志中,以及支持可撤销的操作
命令
定义对象之间的一对多依赖,当一个对象状态改变时,它的所有依赖都会收到通知并且自动更新状态
观察者
为一个对象结构(比如组合结构)增加新能力
访问者
允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它所属的类
状态
为语言创建解释器,通常由语言的语法和语法分析来定义
解释器
提供一种顺序访问聚合对象元素的方法,并且不暴露聚合对象的内部表示
迭代器
集中相关对象之间复杂的沟通和控制方式
中介者
在不违反封装的情况下获得对象的内部状态,从而在需要时可以将对象恢复到最初状态
备忘录
行为型
设计模式
0 条评论
回复 删除
下一页