![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
北朽暖栀24
这个作者很懒,什么都没留下…
展开
-
策略模式——简单案例和交互分析
case:一个程序有多种算法context做一些准备的工作留给策略类调用使用的场景策略类的交互将content传到方法策略类里面。原创 2020-11-30 19:24:14 · 118 阅读 · 0 评论 -
桥接模式——案例分析
桥接模式的本质就是把变化的部分分离,作为一个成员变量组合在类中。case比如咖啡机,如下,有以下几种咖啡增加大小杯的划分,如下:如果多一种咖啡的话,需要两边都加入,这样修改起来很麻烦所以将两者分开将coffeekind聚合到CoffeeCup里面。这里是抽象类之间的编程,依赖于抽象,而不依赖于具体的类。这样在两个维度上修改的时候互不影响。...原创 2020-11-30 15:53:30 · 155 阅读 · 0 评论 -
工厂模式(简单工厂,工厂方法,抽象工厂)——基于headfirst的案例分析
简单工厂方法pizzastore这个类用来制作pizza(获得pizza对象并进行各种流程)简单工厂类,用if——else制造对象pizza类,有制作pizza的各种方法具体的pizza类,继承pizza类为什么要有简单工厂。如果没有工厂,那么需要在pizzastore里面new具体的pizza对象,这样就依赖具体的实现了。所以将pizza进行抽象,这样就不依赖于实现核心就是不依赖类图(类似于下面这个)这里pizzastore相当于客户端逻辑的一部分(因为拿到对象还加工了一下,所以原创 2020-11-30 13:04:00 · 75 阅读 · 0 评论 -
单例模式-基于headfirst设计模式的总结
1.经典的单例模式——懒汉式public class Singleton { private static Singleton uniqueInstance; private Singleton() {} public static Singleton getInstance() { if (uniqueInstance == null) { uniqueInstance = new Singleton(); } return uniqueInstance; } /原创 2020-11-28 11:12:20 · 96 阅读 · 1 评论 -
模板方法模式——基于headfirst的案例讲解
模板方法存在的意义是为了有一个流程,让一些流程相似的事物按照流程走,流程中不同的步骤可以列为抽象方法,让子类重写。就是定义一个算法的骨架,而一些步骤延迟到子类中。模板方法使得子类不改变算法结构的情况下,重新定义算法中的某些步骤。case1 不带钩子的模板方法现在将煮咖啡和煮茶视为一个模板,因为brew和addCondiments步骤不相同,所以列为抽象方法。CaffeineBeverage类,里面有模板方法prepareRecipe(),这里列为finalpublic abstract c原创 2020-11-28 20:22:39 · 114 阅读 · 0 评论 -
适配器模式——基于headfirst的案例分析
适配器模式是通过编写适配器完成两个不同的类之间的相互转换有两种适配器模式:类适配器和对象适配器,这篇的案例主要是适配器类case1将turkey转化为duckduck接口public interface Duck { public void quack(); public void fly();}turkey接口public interface Turkey { public void gobble(); public void fly();}Turkey接口实现publi原创 2020-11-28 19:48:02 · 125 阅读 · 1 评论 -
命令模式——基于headfirst的案例分析
先分析一个headfirst的简单case命令public interface Command { public void execute();}受控制的实体:灯(接收者)public class Light { public Light() { } public void on() { System.out.println("Light is on"); } public void off() { System.out.println("Light is off");原创 2020-11-28 13:45:23 · 72 阅读 · 1 评论