设计模式
CODERGUO
这个作者很懒,什么都没留下…
展开
-
Java的深度克隆和浅度克隆
克隆实现Object类里有个clone方法,用对象.clone()来拷贝原对象克隆测试public class Car { private int color; private String name; private int[] gls; private Object engine; public void setColor(int color) { this.color = color; } public void原创 2020-08-11 21:42:59 · 130 阅读 · 0 评论 -
解释器模式
定义给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子应用场景对于一些固定文法构建一个解释句子的解释器,如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。例如:SQL、XML、正则解析。组合模式的结构抽象表达式(Abstract Expression)角色:定义解释器的接口,约定解释器的解释操作,主要包含解释方法 interpret()。原创 2020-08-11 21:36:35 · 146 阅读 · 0 评论 -
组合模式
定义组合多个对象形成树形结构以表示有整体-部分关系层次结构,组合模式可以让客户端统一对待单个对象和组合对象应用场景存在父子层级关系,父子可用同一个对象表示。组合模式正是应树形结构而生,所以组合模式的使用场景就是出现树形结构的地方。比如:文件目录显示,多及目录呈现等树形结构数据的操作。组合模式的结构抽象构件(Component)角色:它的主要作用是为树叶构件和树枝构件声明公共接口,并实现它们的默认行为。在透明式的组合模式中抽象构件还声明访问和管理子类的接口;在安全式的组合模式中不声明访问和管理子原创 2020-08-10 21:45:13 · 124 阅读 · 0 评论 -
访问者模式
定义命令模式是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请 求排队或者记录请求日志,可以提供命令的撤销和恢复功能。应用场景有时候需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是什么。此时希望用一种松耦合的方式来设计程序,使得请求发送者和请求接收者能够消除彼此之间的耦合关系命令模式原创 2020-08-10 21:07:06 · 139 阅读 · 0 评论 -
命令模式
定义命令模式是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请 求排队或者记录请求日志,可以提供命令的撤销和恢复功能。应用场景有时候需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是什么。此时希望用一种松耦合的方式来设计程序,使得请求发送者和请求接收者能够消除彼此之间的耦合关系命令模式原创 2020-08-09 20:09:33 · 150 阅读 · 0 评论 -
JDK动态代理
什么代理代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。代理原理JDK 动态代理public interface ICreateLoan2 { void create();}public class GuaranteeCreateLoan implements ICreateLoan2 { @Override public void create(原创 2020-08-09 19:36:11 · 118 阅读 · 0 评论 -
迭代器模式
定义迭代器模式提供了一种方法顺序访问一个聚合对象中的各个元素,而又无需暴露该对象的内部实现,这样既可以做到不暴露集合的内部结构,又可让外部代码透明地访问集合内部的数据应用场景访问一个集合对象的内容而无需暴露它的内部表示为遍历不同的集合结构提供一个统一的接口迭代器模式的结构客户端(client)抽象容器角色(Aggregate):负责提供创建具体迭代器角色的接口,一般是一个接口,提供一个iterator()方法,例如java中的Collection接口,List接口,Set接口等。原创 2020-08-09 19:20:12 · 168 阅读 · 0 评论 -
单例模式
单例模式单例模式描述应用场景上代码饿汉模式懒汉模式单例模式描述客户端不再考虑是否需要实例化的问题,把责任都给了应负责的类处理。保证一个类仅有一个或者有限的实例,并提供一个全局生成实例化对象的入口。应用场景频繁创建对象然后再销毁创建对象时耗时过多或者耗资源过多,但又经常用到的对象有状态的工具类对象频繁访问数据库或文件的对象上代码饿汉模式事先准备好对象待使用public class HungryDbConnect { private HungryDbConnect()原创 2020-07-27 17:40:58 · 98 阅读 · 0 评论 -
工厂模式
简单工厂,工厂方法,抽象工厂工厂模式分类上代码简单工厂工厂方法抽象工厂工厂模式分类简单工厂:工厂里维护业务需要的全部对象,客户端请求时,工厂根据具体业务需求返回所需对象。缺点是增加新的业务对象,需要改判断逻辑,违反了开闭原则,客户端依赖工厂实现并不是依赖抽象违反了依赖倒置。工厂方法模式:弥补了简单工厂设计上的缺陷。定义抽象工厂,每个业务实现对应一个工厂实例去生产对象。抽象工厂模式:工厂方法模式每次只能生产同一产品统一零件的不同对象,比如不同汽车配不同发动机,可满足当前业务需求。当不同汽车需要不同发动原创 2020-07-27 00:18:56 · 103 阅读 · 0 评论 -
设计模式分类
设计模式分类创建型对象创建的过程进行封装,抽象对象实例化过程。程序只需要去获取使用对象,不需要关系创建的过程。创建型设计模式功能介绍单例(Singleton)某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。工厂方法 (Factory Method)定义一个用于创建产品的接口,由子类决定生产什么产品。抽象工厂 (AbstractFactory)提供一个创建产品族的接口,其每个子类可以生产一系列相关的产品。原型 (Pro原创 2020-07-27 00:18:33 · 88 阅读 · 0 评论 -
设计原则
设计模式欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编原创 2020-07-22 13:52:29 · 138 阅读 · 0 评论