设计模式
设计模式
BLAZAR'
这个作者很懒,什么都没留下…
展开
-
【设计模式】单例模式
类图 就一个类 代码 Singleton.java package com.company.pattern.demo16; /** * 单例类 * @author blazar */ public class Singleton { private static Singleton instance; private Singleton() {} public static Singleton getInstance(){ /**原创 2021-09-14 16:01:59 · 73 阅读 · 0 评论 -
【设计模式】组合模式
类图 工程目录 代码 AbstractComponent.java package com.company.pattern.demo15; /** * 声明组合中的对象的接口,在适当的情况下,实现所有类共有接口的默认行为 * @author blazar */ public abstract class AbstractComponent { protected String name; public AbstractComponent(String name){原创 2021-09-14 14:55:19 · 76 阅读 · 0 评论 -
【设计模式】备忘录模式
类图 Originator就是需要备份的这个类,它是作为备份和恢复动作的发起者;Memento是用于存放需要被保存下来的字段,这些信息是来自于Originator的;Caretaker用于存放Memento的实例; 工程目录 代码 Memento.java package com.company.pattern.demo14; /** * * @author blazar */ public class Memento { /** * 需要保存的数据属性 */原创 2021-08-20 10:59:11 · 60 阅读 · 0 评论 -
【设计模式】适配器模式
类图 下图指的是类适配器模式 工程目录 代码 Target.java package com.company.pattern.demo13; /** * 用户需要的接口 * @author blazar */ public class Target { public void request(){ System.out.println("普通请求"); } } Adaptee.java package com.company.pattern.demo13;原创 2021-08-19 14:33:39 · 72 阅读 · 0 评论 -
【设计模式】状态模式
类图 工程目录 代码 AbstractState.java package com.company.pattern.demo12; /** * 抽象状态类: 定义一个接口以封装与Context的一个特定状态相关的行为 * @author blazar */ public abstract class AbstractState { /** * 用来描述与状态相关的行为 * @param context */ public abstract void原创 2021-08-18 11:14:10 · 84 阅读 · 0 评论 -
【设计模式】抽象工厂模式
类图 相较于工厂模式是生产单个类,抽象工厂的作用是生产一个更加复杂的类,这个复杂的类是由多个类组成的,而这些类又有多种实现方法,抽象共产的目的是为了解决生产多个属于同一产品下的不同类的问题 工程目录 代码 AbstractFactory.java package com.company.pattern.demo11; /** * 抽象工厂:里面应该包含所有的产品创建的抽象方法 * @author blazar */ public abstract class AbstractFactory原创 2021-08-17 17:30:51 · 65 阅读 · 0 评论 -
【设计模式】观察者模式
观察者模式,也叫发布-订阅模式,定义了一种一对多的关系,多个观察者可以同时监听某一个主题,这个主题的对象的状态发生变化时,会通知所有的观察者对象 类图 工程目录 代码 AbstractSubject.java package com.company.pattern.demo10; import java.util.ArrayList; import java.util.List; /** * 主题、抽象通知者 * @author blazar */ public abstract clas.原创 2021-08-17 15:30:44 · 42 阅读 · 0 评论 -
【设计模式】建造者模式
类图 工程目录 代码 Product.java package com.company.pattern.demo09; import java.util.ArrayList; import java.util.List; /** * 产品类 * @author blazar */ public class Product { List<String> parts = new ArrayList<>(); /** * 添加产品部件 *原创 2021-08-17 14:29:00 · 40 阅读 · 0 评论 -
【设计模式】外观模式
类图 子系统不需要知道Facade的存在,这一特性使得我们可以将外观模式用在维护遗留代码上 工程目录 代码 SubSystemA.java package com.company.pattern.demo08; /** * @author blazar */ public class SubSystemA { public void methodA(){ System.out.println("子系统方法A"); } } SubSystemB.java pac原创 2021-08-17 11:55:37 · 55 阅读 · 0 评论 -
【设计模式】模板方法模式
类图 一言以蔽之,模板方法就是将相对固定的步骤、算法提取到父类中,子类中只放变化的部分,通过复用父类的公共方法,减少了代码的冗余 工程目录 代码 AbstractClass.java package com.company.pattern.demo07; /** * 抽象类,实现了一些模板方法,定义了算法的骨架, * 其中一些方法没有实现,需要在子类中实现 * @author blazar */ public abstract class AbstractClass { /**原创 2021-08-17 10:58:18 · 44 阅读 · 0 评论 -
【设计模式】原型模式
类图 原型模式是一个比较简单的模式,对于Java而言,在原型类中实现Cloneable接口即可,唯一需要注意的是如果原型类中有引用类型,需要注意使用深复制 工程目录 新建Java控制台项目即可 代码 Prototype.java package com.company.pattern.demo06; /** * 原型类 * @author blazar */ public class Prototype implements Cloneable{ private int id;原创 2021-08-17 10:19:00 · 52 阅读 · 0 评论 -
【设计模式】工厂方法模式
类图 工程目录 新建一个Java控制台项目即可; 代码 AbstractOperation.java package com.company.pattern.demo05; /** * show 运算类 * @author Blazar */ public abstract class AbstractOperation { private double numberA; private double numberB; /** * 得到运算结果原创 2021-08-16 23:27:29 · 54 阅读 · 0 评论 -
【设计模式】代理模式
类图 工程目录 代码 AbstractSubject.java package com.company.pattern.demo04; /** * 定义了RealSubject和Proxy的共用接口,这样就可以在任何使用RealSubject的地方使用Proxy * @author blazar */ public abstract class AbstractSubject { /** * 请求方法 */ public abstract void reque原创 2021-08-16 22:46:38 · 67 阅读 · 0 评论 -
【设计模式】简单工厂模式
工程目录 新建一个Java控制台程序即可 代码 AbstractOperation.java package com.company.pattern.demo01; /** * show 运算类 * @author Blazar */ public abstract class AbstractOperation { private double numberA; private double numberB; /** * 得到运算结果 * @au原创 2021-08-12 22:11:34 · 61 阅读 · 0 评论 -
【设计模式】策略模式
类图 此图中结合了策略模式和简单工厂,单纯的策略模式不需要在CashContext中生成具体策略的对象,可以作为构造函数的参数传入即可 工程目录 代码 AbstractCash.java package com.company.pattern.demo02; /** * AbstractCash是抽象的策略,它的实现类是具体的策略 * @author blazar */ public abstract class AbstractCash { /** * 现金收取抽象类的抽原创 2021-08-15 22:05:05 · 86 阅读 · 1 评论 -
【设计模式】装饰模式
类图 工程目录 代码 AbstractComponent.java package com.company.pattern.demo03; /** * 抽象接口 * @author blazar */ public abstract class AbstractComponent { /** * 抽象操作 */ public abstract void operation(); } ConcreteComponent.java package com.com原创 2021-08-15 23:47:03 · 71 阅读 · 0 评论