设计模式
we1less
学习
展开
-
责任链模式-- 用于多级处理 链式处理场景
Approver.java 责任者的抽象类 用来定义传递方法 package com.godv.responsibility; //链式结构的抽象类 public abstract class Approver { Approver approver; // 下一个处理者 String name; // 名字 public Approver(String name) { // TODO Auto-generated constructor stub this.na...原创 2021-01-14 22:12:36 · 227 阅读 · 1 评论 -
中介模式-- 解决对象之间的交互依赖交织
Colleague.java 中含有中介者的抽象类 package com.godv.mediator; //抽象的同事类 最终中介的就是其实现类的功能 public abstract class Colleague { private Mediator mediator; public String name; //强制子类构造器中包含Mediator 中介者的抽象类 public Colleague(Mediator mediator, String name) { t..原创 2021-01-13 23:53:05 · 165 阅读 · 0 评论 -
备忘录模式--用于记录状态 有恢复要求的场景
GameRole.java package com.godv.memento; //被记录的类 public class GameRole { private int vit; private int def; //创建Memento ,即根据当前的状态得到Memento并且保存 public Memento createMemento() { return new Memento(vit, def); } //从备忘录对象,恢复GameRole的状态 public void原创 2021-01-12 23:46:49 · 101 阅读 · 0 评论 -
组合模式--用于树形结构的场景
Component.java package com.godv.composite; //叶子节点和根节点的抽象类 public abstract class Component { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } // 提供一个add方法用来构建树 public void原创 2021-01-12 21:30:18 · 169 阅读 · 1 评论 -
模板方法模式--规范操作步骤 延迟具体实现
SoyaMilk.java package com.godv.template; //模板方法的的抽象类 //用来规范代码方法的调用顺序 public abstract class SoyaMilk { // 模板方法 make , 模板方法可以做成final , 不让子类去覆盖. final void make() { select(); if (customerWantCondiments()) { addCondiments(); } soak(); beat()原创 2021-01-11 22:51:39 · 169 阅读 · 5 评论 -
桥接模式-- 将抽象和实现解耦 利用一个类似于桥的类
Phone.java 桥类 package com.godv.bridge; //桥接类 与类型繁多的抽象接口桥接 public abstract class Phone { Brand brand; public Phone(Brand brand) { super(); this.brand = brand; } public void open() { if (brand != null) { brand.open(); } } public v..原创 2021-01-10 22:16:28 · 115 阅读 · 0 评论 -
策略模式--选择不同策略实现不同的功能
Duck.java chou 目标抽象类 成员变量为策略模式接口 定义的方法为策略接口提供的具体实现方式 package com.godv.strategy; public abstract class Duck { private FlyStrategy flyStrategy; public abstract void display(); //根据不同策略选择不同的行为方式 public void fly() { if (flyStrategy != null)...原创 2021-01-10 11:40:15 · 580 阅读 · 0 评论 -
原型模式--克隆对象 性能比new高很多
public Object deepClone() { //创建流对象 ByteArrayOutputStream bos = null; ObjectOutputStream oos = null; ByteArrayInputStream bis = null; ObjectInputStream ois = null; try { //序列化 bos = new ByteArrayOutputStream(); oos = new Obj.原创 2021-01-08 22:02:48 · 216 阅读 · 0 评论 -
享元模式--避免创建多对象、对象共享
WebSite.java package com.godv.flyweight; public abstract class WebSite { //外部状态方法 public abstract void use(User user); } ConcreteWebSite.java package com.godv.flyweight; public class ConcreteWebSite extends WebSite { // 共享的部分,内部状态map的key priva原创 2021-01-04 21:18:34 · 128 阅读 · 1 评论 -
状态模式
保存所有操作流程接口 package com.godv.state; //状态接口 public interface State { /** * 重置 */ void reset(Context context); /** * 设置数据源 */ void setDataSource(Context context); /** * 异步准备 */ void prepareAsync(Context .原创 2021-01-03 11:16:38 · 167 阅读 · 3 评论 -
简单工厂模式
Pizza.java package com.godv.factory.simple; public abstract class Pizza { private String name; public abstract void prepard(); public void setName(String name) { this.name = name; } public void bake() { System.out.println(name + "start bake"原创 2020-12-22 22:32:36 · 124 阅读 · 0 评论 -
装饰者模式--用于扩展 类 的方法
Drink.java package com.godv.decorator; public abstract class Drink { private String name; private float price; public String getName() { return name; } public void setName(String name) { this.name = name; } public float getPrice() { ret原创 2020-12-21 22:19:18 · 177 阅读 · 1 评论 -
代理模式--委托代理对象控制对被代理对象的访问
静态代理模式 ITeach.java package com.godv.proxy; public interface ITeach { public void teach(); } TeacherManager.java package com.godv.proxy; public class TeacherManager implements ITeach{ @Override public void teach() { // TODO Auto-generated method stu原创 2020-12-20 12:03:32 · 177 阅读 · 1 评论 -
观察者模式
Subject.java package com.godv.observer; //被观察者的抽象接口 public interface Subject { public void registerObserver(Observer o); public void removeObserver(Observer o); public void notifyObservers(); } Observer.java package com.godv.observer; public i原创 2020-12-18 00:12:24 · 89 阅读 · 0 评论 -
适配器模式
1.类适配器 Adapter类,通过继承 src类,实现 dst 类接口,完成src->dst的适配。 src: package com.godv.adapter; public class Voltage220V { private int voltage = 220; public int output220v() { System.out.println("电源输出:" + voltage + "V 电压"); return voltage; } } package原创 2020-12-17 00:00:07 · 167 阅读 · 0 评论 -
单例模式
双重检查 class Singleton { private static volatile Singleton instance = null; private Singleton() {} public static Singleton getInstance() { if (instance == null) { synchronized (Singleton.class) { if (instance == null) { instance = new .原创 2020-12-15 22:34:10 · 115 阅读 · 0 评论