![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Design Pattern
文章平均质量分 69
john_cena
这个作者很懒,什么都没留下…
展开
-
【设计模式】责任链
责任链设计模式 一般原则: 当请求被责任链中某个对象处理了,则停止后续调用;否则,将请求继续往下传递。 变体: 请求可以被责任链中某几个对象处理,也可以分别被每个对象处理一遍。 Sample1: 日志记录为例,任务会依次传递到每一个对象上,至于是否处理则由具体对象来决定: DEBUGE级别的,只往控制台输出; NOTICE级别的,往控制台输出,并发送邮件; ERROR...原创 2014-07-22 00:38:48 · 94 阅读 · 0 评论 -
【设计模式】单例模式
* 一些场景需要确保只有唯一的对象存在,如:线程池、网络连接、缓存等 package pattern.singleton; //饥饿式-多线程环境下仍然安全 public class Eager { public static Eager instance = new Eager(); private Eager(){} public static Ea...原创 2014-08-03 16:52:25 · 54 阅读 · 0 评论 -
【设计模式】工厂模式
工厂模式 最核心的功能就是完成对象的创建; 该模式可以避免直接使用new操作符在客户端创建对象; 找出会变化的地方,将其从不变的代码中分离出来! 工厂模式的应用主要分以下4种: 一、静态工厂 通过静态方法返回对象。静态方法可以接收参数,然后根据传入的参数决定返回的对象。 二、简单工厂 将工厂组合到客户端,由客户端调用工厂来获取对象。 * 简单工...原创 2014-08-02 23:24:16 · 114 阅读 · 0 评论 -
【设计模式】装饰模式
装饰模式: 动态的将责任附加到对象上 对于扩展性而言,装饰模式比继承更具有弹性,因为装饰模式利用组合关系 关键地方: 让装饰者与被装饰者实现同一个接口,或者继承同一个抽象类,目的是为了让它们具有统一的类型 类型统一了,方法就可以接收所有的子类型,然后在运行时动态绑定到具体的子类对象上 ===》接口:让装饰者与被装饰者具有统一的类型 package pattern.decor...原创 2014-07-29 00:53:04 · 70 阅读 · 0 评论 -
【设计模式】观察者
观察者模式: 当某个事件发生时,通知客户端进行响应,如监听器的原理,即可采用此模式来实现。 观察者对主题中某些属性的改变感兴趣,或者对某个事件的发生感兴趣。 这些变化将由主题通知观察者。 观察者需要先注册到主题中,只要注册到主题中,当事件发生时就会得到通知。 当不关心事件是否发生时,可以取消注册。 ===》主题 package pattern.observer; pu...原创 2014-07-28 00:50:31 · 82 阅读 · 0 评论 -
【设计模式】策略模式
策略模式 为了满足不同子类具有不同的行为而设计 而且,它可以提供行为/算法的互换,使行为具有可变性 而且,支持扩展新的行为而不影响原有的代码 Sample1: package pattern.strategy; /** * 策略模式 * 实现一组可相互切换的行为类/算法簇 */ public class StrategyExample { publ...原创 2014-07-27 22:21:33 · 54 阅读 · 0 评论 -
【设计模式】一般性指导原则
使用某个设计模式先问自己3个问题: 1. 这个模式是干什么用的? 2. 不使用这个模式我会怎么做? 3. 用了这个模式我又会怎么做?可以带来哪些好处? 针对接口编程,而不是针对具体编程; 针对接口编程,利用多态,可以在运行时与任何(新)实现类进行绑定,以此达到“对修改关闭”的目的。 变化的地方使用接口进行引用,在运行时动态绑定到某个子类上; 多用组合,少用...原创 2014-07-27 21:22:37 · 156 阅读 · 0 评论 -
【设计模式】建造者
package pattern.builder; public class BuilderDemo { public static void main(String[] args) { NutritionFacts cocaCola = new NutritionFacts.Builder(240, 8) .calories(100).sodium(35...原创 2014-07-27 13:20:40 · 64 阅读 · 0 评论 -
【设计模式】工厂&工厂方法&模板方法
工厂:根据不同条件返回不同类型的对象。 工厂方法:通过子类复写父类的(抽象)方法,返回具体对象。 模板方法:定义通用的程序执行流程,某些不确定的步骤在父类中使用抽象方法进行定义,具体实现交给子类。 package pattern.factorymethod; import java.util.Arrays; import java.util.HashSet; ...原创 2014-07-27 01:32:32 · 180 阅读 · 0 评论 -
【设计模式】命令模式
命令模式: 通过订单实现服务员与厨师的完全解耦 服务员不关心订单的具体内容是什么,只需要将订单交给厨师即可 角色划分 订单:Command 服务员:Invoker 厨师:Receiver 使用命令模式可以实现工作队列,将接收到的命令放到BlockingQueue中 任务执行者从BlockingQueue中获取任务即可 package pattern....原创 2014-08-03 22:52:40 · 70 阅读 · 0 评论