设计模式
文章平均质量分 50
23种设计模式的示例
Xiao--Y
一个普通的java工程师
展开
-
设计模式-单例模式
目录简介实际应用场景UML代码实现1.饿汉式(线程安全) [不推荐用]2.懒汉式(线程不安全) [不推荐用]3.懒汉式-加锁(线程安全) [不推荐用]4.懒汉式-双重校验锁(线程安全) [推荐用]5.枚举(线程安全) [极推荐使用]6.静态内部类(线程安全) [推荐用]7. 测试代码测试简介一个类只允许创建一个对象(或者实例),那这个类就是一个单例类实际应用场景在一些常用的工具类、线程池、缓存,数据库,账户登录系统、配置文件等程序中可能只允许我们创建一个对象UML代码实现1.饿汉式(线程安全)原创 2021-03-22 10:03:05 · 79 阅读 · 0 评论 -
设计模式-工厂模式
目录简介实际应用场景UML代码实现测试简介工厂模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。实际应用场景1、日志记录器:记录可能记录到本地硬盘、系统事件、远程服务器等,用户可以选择记录日志到什么地方。2、数据库访问,当用户不知道最后系统采用哪一类数据库,以及数据库可能有变化时。3、设计一个连接服务器的框架,需要三个协议,“POP3”、“IMAP”、“HTTP”,可以把这三个作为产品类,原创 2021-03-21 20:07:47 · 61 阅读 · 0 评论 -
设计模式-状态模式
目录简介实际应用场景UML代码实现测试简介在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。实际应用场景1、打篮球的时候运动员可以有正常状态、不正常状态和超常状态。2、曾侯乙编钟中,‘钟是抽象接口’,'钟A’等是具体状态,'曾侯乙编钟’是具体环境(Context)。UML代码实现public class Context {原创 2021-03-18 09:54:02 · 68 阅读 · 2 评论 -
设计模式-责任链模式
目录简介实际应用场景UML代码实现测试简介责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。实际应用场景1、红楼梦中的"击鼓传花"。2、JS 中的事件冒泡。3、JAVA WEB 中 Apache Tomcat 对 En原创 2021-03-17 09:29:01 · 74 阅读 · 0 评论 -
设计模式-代理模式
目录简介实际应用场景UML1、静态代理2、动态代理代码实现1、静态代理2、动态代理(JDK)测试1、静态代理2、动态代理(JDK)简介代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用实际应用场景买火车票不一定在火车站买,也可以去代售点UML1、静态代理2、动态代理代码实现/** * @author liuyongtao * @since 2021-3-15 12:00 */public interface Image { void display原创 2021-03-15 14:35:15 · 75 阅读 · 0 评论 -
设计模式-迭代器模式
目录简介实际应用场景UML代码实现测试简介提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。实际应用场景将书(Book)放到书架(BookShelf)中,并将书名按顺序显示UML代码实现/** * @author xiaoy * @since 2021-3-10 9:38 */public interface Container<E> { Iterator<E> iterator();}/** * @author xi原创 2021-03-10 10:30:52 · 68 阅读 · 0 评论 -
设计模式-策略模式
目录简介实际应用场景UML代码实现测试简介定义算法族,分别封装起来,让它们之间可相互替换,此模式让算法的变化独立于使用算法的客户实际应用场景账单同步的功能。来自不同平台的账单,使用不同的文件保存,需要解析文件,校验数据,保存数据,归档账单UML代码实现/** * 解析数据接口 * * @author xiaoy * @since 2021-3-8 15:33 */public interface IParsingData { void parsingData()原创 2021-03-09 09:01:20 · 84 阅读 · 0 评论 -
设计模式-命令模式
目录简介实际应用场景UML代码实现测试简介将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。(简化: 将请求封装成对象,将动作请求者和动作执行者解耦。)实际应用场景假设现在有电视、电脑、电灯等家电,现在需要你做个遥控器控制所有家电的开关,要求做到每个按钮对应的功能供用户个性化,对于新买入家电要有非常强的扩展性UML代码实现/** * 命令执行器接口 * * @author xiaoy * @since 2021-3-8 8:51原创 2021-03-08 09:30:02 · 76 阅读 · 0 评论 -
设计模式-观察者模式
目录简介实际应用场景UML代码实现测试简介观察者模式,又可以称之为发布-订阅模式,观察者,顾名思义,就是一个监听者,类似监听器的存在,一旦被观察/监听的目标发生的情况,就会被监听者发现实际应用场景观察者模式多用于实现订阅功能的场景,例如微博的订阅UML代码实现/** * 主题 * @author liuyongtao * @since 2021-3-5 9:26 */public interface Subject { void registerObserver(Obse原创 2021-03-05 17:27:45 · 73 阅读 · 0 评论