设计模式类图

设计模式的目标

应对各种需求变化,将变化隔离

23种设计模式分类

一、创建型模式

1、工厂方法模式

符合开闭原则

2、抽象工厂模式

增加产品族支持开闭原则,增加产品等级结构不支持开闭原则。

模式应用:操作系统界面主题

3、建造者模式

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以构建不同的表示

相比于抽象工厂模式,建造者模式侧重于一步步构建一个复杂的对象,返回一个完整的对象

增加具体建造者支持开闭原则

4、原型模式

模式应用:复制粘贴

5、单例模式

单例模式虽然简单,但是需要理解为什么单例模式的工厂方法和成员变量都是静态的。
首先,因为要禁止其他程序创建类的对象,单例类的构造函数必须是私有的,那么要怎么创建单例类呢,只有通过类名直接调用类的静态方法才可以,而静态方法不能访问非静态类成员变量,所以成员变量也必须是静态的。

模式应用:任务管理器

二、结构型模式

1、适配器模式

类适配器模式

对象适配器模式

模式应用:JDBC驱动软件

2、桥接模式

桥接模式将抽象部分与实现部分分离。

模式应用:Java虚拟机

3、组合模式

组合模式对单个对象和组合对象的使用具有一致性。
透明组合模式

安全组合模式

模式应用:操作系统目录结构

4、装饰模式

装饰模式分为透明装饰模式和半透明装饰模式
透明装饰模式要求客户端编程全部声明为抽象构件类型,半透明装饰模式允许在客户端声明具体装饰者类型的对象,调用具体装饰者中新增的方法

模式应用:IO流

5、外观模式

为自系统中的一组接口提供一个统一的入口。是“迪米特原则”的体现。

在不引入抽象外观类的情况下,增加新的子系统可能需要修改外观或客户端的源代码,违背了“开闭原则”。

模式应用:网站界面

6、享元模式

使用共享技术来实现大量细粒度对象的复用。

享元模式通常可以和工厂模式、单例模式及组合模式联用

模式应用:String

7、代理模式

保护代理:控制对真实对象的使用权限
远程代理:使得客户端可以访问在远程机器上的对象
虚拟代理:可以使用一个小对象来代表一个大对象,例如由于网速原因不能立即显示图片时,可以先把小图片传送到客户端

模式应用:远程控制

三、行为型模式

1、职责链模式

核心:抽象处理者类

增加新的具体处理者类对原有类库无任何影响,符合开闭原则
模式应用:Java异常处理机制

2、命令模式

按键设置是命令模式的一种典型应用,使按键与接收者解耦

增加新的具体命令无须修改原有系统代码,满足开闭原则

模式应用:Java Swing中的ActionListener充当抽象命令类

3、迭代器模式

迭代器将数据的遍历功能从聚合对象中分离出来,聚合对象只负责存储数据,而遍历数据由迭代器来完成,访问聚合对象的内容无须暴露它的内部表示,迭代器模式是单一职责原则的完美体现

为了实现方便,可以将具体迭代类作为具体聚合类的内部类
增加新的聚合类和迭代器类都无须修改原有代码,满足开闭原则
模式应用:Iterator是聚合框架Collection的迭代器

4、中介者模式

通过引入中介者,可以将系统的网状结构变成以中介者为中心的星状结构,中介者模式是迪米特原则的一个典型应用

模式应用:MVC框架中Controller是Model和View的中介者

5、观察者模式

增加新的具体观察者类符合开闭原则,在具体观察者和观察目标之间不存在关联的情况下,增加新的观察目标也符合开闭原则
模式应用:Java Swing中的ActionListener充当抽象观察者

6、状态模式

状态模式可以将对象状态从包含该状态的类中分离出来,做成一个个单独的状态类

大多数的状态模式都是可以切换状态的状态模式,在具体环境类中可以调用到环境类的setState方法,因此状态类和环境类之间通常还存在关联关系或者依赖关系,可以切换状态的状态模式对开闭原则的支持不太友好,增加状态类需要修改负责转换的源代码,否则无法切换到新增状态
模式应用:网购订单的各种状态

7、策略模式

策略模式是对算法的封装,它把算法的责任和算法本身分割开,委派给不同的对象管理。

策略模式对开闭原则完美支持
模式应用:JFrame可以设置不同的布局策略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值