
设计模式
Andycuigo
wanna and got
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
设计模式-行为型-责任链模式
责任链模式 责任链(Chain of Responsibility)模式为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 使用场景 一个请求对象需要多种任务的处理,通过链式传播对象的场景。 优点 1.职责链对于客户请求是透明的 2.“链”将请求的发送者和处理者解耦 代码演示 日志类级别有debug、info、warn、error的区别,模拟日志类对请求的处理。 日志请求 /** * 日志类 */ @AllArgsConstruc原创 2021-03-09 17:37:27 · 127 阅读 · 0 评论 -
设计模式-行为型-观察者模式
观察者模式 当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。 使用场景 一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。 代码 事件类,定义了事件源头、被回调对象、回调方法,等其他可用的信息 /** * 事件 */ public class Event { //事件源 private Object source; //被回调对象原创 2021-03-08 17:55:59 · 118 阅读 · 0 评论 -
设计模式-结构型-装饰者模式
装饰者模式 装饰者(Decorator)模式是指在不改变原对象的基础之上,将功能附加到对象上,提供了比继承更灵活性的替代方案(扩展原有对象的功能),装饰者模式属于结构型模式。 区别于适配器模式 装饰者模式 适配器模式 是一种特别的适配器 可以不保留层级关系 装饰者和被装饰者实现同一个接口,目的是方便扩展 适配者和被适配者没有必然的层级关系,通常使用代理或者继承形式进行包装 满足is-a 关系 满足has-a关系 注重的是覆盖和扩展 注重的是兼容、转换 装饰者模式应用 io和i原创 2021-03-08 11:25:09 · 102 阅读 · 0 评论 -
设计模式-创建型-建造者模式
建造者模式 定义 将一个复杂的对象的构建与它的表示分离,是的同样的构建过程可以创建不同的表示。 场景 初始化一个对象特别复杂,如使用多个构造方法,或者说有很多参数,并且都有默认值时。 一般4个以上参数,考虑使用建造者模式创建对象。 UML图 总结 为了灵活构造复杂对象,该对象会有多个成员变量,在外部调用的时候,不需要或者不方便一次性创建出所有的成员变量,在这种情况下,使用多个构造方法去构建对象,很难维护,这时候Builder设计模式解决这个问题,进行buid()方法中创建对象,并且将builder传入,该转载 2021-03-04 21:38:12 · 175 阅读 · 1 评论 -
设计模式-行为型-委派模式
委派模式 委派模式(Delegate)不属于23种常见设计模式,静态的代理模式+策略模式=委派模式。 区别 代理模式:注重的是过程 策略模式:注重的是可扩展 委派模式:注重的是内部灵活运用和结果 案例 案例一 老板,经理,员工。 老板把活交给经理,经理拆分了任务,根据每名员工的能力分配能胜任的工作。 案例二 springmvc中的DispatcherServlet类,这个类把Controller中的Method和url组装成了MappedHandler,当请求到达,doDispatcher()通过HttpR原创 2021-03-04 17:39:01 · 131 阅读 · 1 评论 -
设计模式-行为型-策略模式
策略模式 概念 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 使用场景 挑选一种算法来作出某种选择。在有多种算法相似的情况下,避免使用 if…else 所带来的复杂和难以维护 实际应用 选择支付方式、出行方式 优缺点 优点: 1、算法可以自由切换。 2、避免使用多重条件判断。 3、扩展性良好。 缺点: 1、策略类会增多。 2、所有策略类都需要对外暴露。 代码实现 网购下单时选择某种支付方式 ...原创 2021-03-03 16:11:18 · 112 阅读 · 2 评论 -
设计模式-结构型-代理模式
代理模式原创 2021-03-02 16:53:04 · 96 阅读 · 0 评论 -
设计模式-结构型-外观模式
概念 外观模式(Facade),他隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构性模式。为子系统中的一组接口提供了一个统一的访问接口,这个接口使得子系统更容易被访问或者使用。 举例 遥控器预约咖啡机煮咖啡,需要烧水模块烧开水,研磨模块磨碎咖啡豆两个步骤。 外观模式抽象结构 代码 烧水模块 研磨模块 咖啡机 遥控器 运行结果 在外观模式中主要包含如...原创 2019-10-24 23:11:03 · 194 阅读 · 0 评论 -
设计模式-结构型-组合模式
定义 组合模式,又叫部分-整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。 ps://www.jianshu.com/p/8ec55296dd9c ...原创 2019-10-24 08:37:31 · 194 阅读 · 0 评论 -
设计模式-创建型-单例模式
简介 单例的核心就在于单实例,即整个环境中该类有且只能有一个对象。而java创建实例的方式已知的有四种,分别是通过new、clone、反射或者序列化这四种方式去创建实例 特点 1、单例只能有一个实例。 2、单例必须自己创建自己的唯一实例。 3、单例必须给所有其他对象提供这一实例。 优点VS缺点 优点 1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理缓存)。 2、避免...原创 2019-10-22 21:54:27 · 146 阅读 · 0 评论 -
java 23种设计模式和6大设计原则
java的设计模式大体上分为三大类: 创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。 行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 设计模式遵循的原则有6个: 1、...原创 2019-10-16 21:46:13 · 232 阅读 · 0 评论