![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 69
JYY_JYY_
这个作者很懒,什么都没留下…
展开
-
设计模式——创建型_原型模式
类图 代码 深克隆 浅克隆 总结 1. 类图 2. 代码 浅克隆:实现Cloneable接口,重写clone()方法(格式固定) 深克隆:实现Serializable接口,通过序列化将对象写到一个流中,再从流里将其读出来,可以实现深克隆 2.1 浅克隆 需要被克隆的类 class Prototype implements Cloneable{ public Prototype clone(){ ...原创 2020-12-31 14:12:42 · 107 阅读 · 0 评论 -
设计模式——结构型_适配器模式
角色 适配器模式分类 类适配器模式 对象适配器模式 默认(接口)适配器模式 总结 1. 角色 例子:去英国旅游,但是英国的电压是230V,国内是220V Target(目标):目标可以是具体的或抽象的类,也可以是接口。这里230V是我们的目标 Adaptee(已有接口):一般是接口。这里220V是我们已有的接口 Adapter(适配器):这里指的是转换插头(220V转230) 2适配器模式分类 适配器模式有分三类: 类适配器模式(class adapter pat..原创 2020-12-31 11:09:55 · 119 阅读 · 2 评论 -
设计模式复习提纲
1. 创建型(5) (1)单例模式 Singleton:https://blog.csdn.net/qq_41157876/article/details/111520172 懒汉,饿汉 三种常用的线程安全:DCL,静态内部类,枚举类 (2,3)工厂模式Factory:https://blog.csdn.net/qq_41157876/article/details/111554105 简单工厂:if...else判断,违反开闭 工厂方法:Product接口,Factory接口(实.原创 2020-12-29 15:03:31 · 151 阅读 · 1 评论 -
设计模式——行为型模式_中介者模式
1. 类图 2. 角色 User:用户 ChatRoom:中介者,负责向所有User显示消息 3. 代码 中介类 public class ChatRoom { public static void showMessage(User user, String message){ System.out.println(new Date().toString() + " [" + user.getName() +"] : " + message);原创 2020-12-29 11:00:37 · 98 阅读 · 0 评论 -
设计模式——行为型模式_状态模式
1. 类图 2. 代码 State相关 接口 public interface State { public void doAction(Context context); } 实现类:此处定义Start和Stop两个状态 public class StartState implements State { public void doAction(Context context) { System.out.println(原创 2020-12-29 10:46:19 · 92 阅读 · 0 评论 -
设计模式——行为型模式_备忘录模式
1. 类图 2. 角色 Memento:包含了要被恢复的对象的状态 Originator:创建新的Memento;或者设置Memento中的状态 CareTaker:记录Memento的历史状态 3. 代码 Memento public class Memento { private String state; public Memento(String state){ this.state = state; } public String原创 2020-12-29 09:55:36 · 77 阅读 · 0 评论 -
设计模式——行为型模式_命令模式
1. 类图 2. 角色 Command(抽象命令类) ConcreteCommand(具体命令类) Invoker(调用者):请求的发送者,它通过命令对象来执行请求 Receiver(接收者):真正执行命令的对象 Client(客户端) 3. 代码 命令相关 Command //抽象命令类:抽象的命令,可以根据不同类型的命令写出不同的实现 public interface Command { void execute(); //调用命令 }原创 2020-12-29 09:39:27 · 92 阅读 · 0 评论 -
设计模式——行为型模式_观察者模式/发布-订阅模式
1. 类图 2. 角色 Subject:被观察者,抽象类 ConcreteSubject:被观察者的具体类,每个具体类中有列表记录任意数量的观察者 Observer:观察者接口 ConcrereObserver:具体观察者 3. 代码 观察者 观察者抽象接口 public interface Observer { public void update(String message); } 观察者实现类 public class Weix原创 2020-12-28 14:10:34 · 106 阅读 · 0 评论 -
设计模式——行为型模式_模板方法模式
1. 类图 2. 代码 总抽象类Game——提供模板 public abstract class Game { abstract void initialize(); abstract void startPlay(); abstract void endPlay(); public final void play(){ //模板 initialize(); //初始化游戏 startPlay(); //开始游戏原创 2020-12-28 11:00:50 · 86 阅读 · 0 评论 -
设计模式——行为型模式_策略模式
1. 类图 2. 代码 策略相关 策略总接口 public interface Strategy { public int doOperation(int num1, int num2); } 策略实现类:具体策略 public class OperationAdd implements Strategy{ @Override public int doOperation(int num1, int num2) { ret原创 2020-12-28 10:39:58 · 102 阅读 · 0 评论 -
设计模式——结构型_享元模式
https://www.runoob.com/design-pattern/flyweight-pattern.html原创 2020-12-28 10:03:13 · 80 阅读 · 0 评论 -
设计模式——结构型_组合模式
1. 场景 我们有一个类Employee,该类被当作组合模型类。CompositePatternDemo类使用Employee类来添加部门层次结构,并打印所有员工。 2. 类图 3. 代码 员工类 import java.util.ArrayList; import java.util.List; public class Employee { private String name; private String dept; private int sa...原创 2020-12-28 09:50:54 · 94 阅读 · 0 评论 -
设计模式——结构型_外观模式
外观模式(门面模式) 总结 1. 外观模式(门面模式) 假如有三个图形:Circle,Rectangle,Square,各自有各自的方法。ShapeMaker提供了一个门面,让用户不用关心内部实现,使用这三个图形的任意方法 类图 Shape接口 public interface Shape { void draw(); } 图形实现类 public class Rectangle implements Shape { @Override .原创 2020-12-24 11:19:09 · 92 阅读 · 0 评论 -
设计模式——结构型_代理模式(静态,jdk,cglib)
静态代理 JDK动态代理(接口代理) Cglib动态代理(子类代理) 1. 概述 代理模式提供了对目标对象另外的访问方式:通过代理对象访问目标对象 这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能 这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法 2. 情景 抽象接口(租房:Rent接口) 真实角色(比如房东小张:Host类实现Rent接口) 代理角色(代理真实角色,比如中介,负责帮.原创 2020-12-24 10:44:36 · 106 阅读 · 0 评论 -
设计模式——创建型_建造者模式
传统Builder模式 简单版Builder模式 总结 1. 传统创造者模式 1.1 需求 造电脑,有不同的品牌(苹果,联想),其中cpu和ram是必须的电脑组件,其他组件(keyboard, display, usbCount)是可选组件 1.2类图 builder共四个角色 Product: 最终要生成的对象,例如 Computer 实例 Builder: 构建者的抽象基类(有时会使用接口代替)。其定义了构建Product的抽象步骤,其实体类需要实现这些步骤。其会包含一个用来返..原创 2020-12-23 14:09:20 · 110 阅读 · 0 评论 -
设计模式——结构型_桥接模式
Background 类图 代码 总结 与装饰者模式的区别 1. 情景模式 发送消息的方式 紧急 一般 邮件 紧急消息邮件发送 一般消息邮件发送 短信 紧急消息短信发送 一般消息短信发送 2. 类图 3. 代码 消息类 抽象类 public abstract class AbstractMessage { private String message; private MessageSender se.原创 2020-12-23 11:18:35 · 226 阅读 · 1 评论 -
设计模式——结构型_装饰器模式
有这样一个需求:星巴克咖啡订单项目 主成分——咖啡:Espresso(意大利浓咖啡)、DarkRoast、HouseBlend、Decaf(无因咖啡) 装饰者——调料:Milk、Soy(豆浆)、Whip、Mocha 1. 装饰者模式 装饰者模式类图 应用到此订单系统上 2. 代码实现 抽象类Beverage:抽象的饮料类 public abstract class Beverage { String description = "Unknown Beverag.原创 2020-12-22 17:38:56 · 146 阅读 · 0 评论 -
设计模式——创建型_工厂模式
简单工厂(Simple Factory) 工厂方法(Factory Method) 抽象工厂(Abstract Factory) 1. 简单工厂 产品相关 Product总接口 public interface Product{}//声明类所需继承的共同接口,也可以是抽象类 产品实现类:产品A和产品B public class ProductA implements Product { public ProductA...原创 2020-12-22 16:11:37 · 110 阅读 · 0 评论 -
设计模式——创建型_单例模式
饿汉式(静态常量 / 静态代码块) 饿汉式(不推荐使用:线程不安全,串行) DCL 静态内部类 枚举 1. 饿汉式(静态常量和静态代码块) public class A { public static void main(String[] args) { B b1 = B.getInstance(); B b2 = B.getInstance(); C c1 = C.getInstance();...原创 2020-12-22 14:52:49 · 137 阅读 · 1 评论 -
设计模式——行为型_责任链模式
责任链(Chain of Responsibility)模式的定义: 为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。 优缺点 优点 降低了对象之间的耦合度。该模式使得一个对象无须知道到底是哪一个对象处理其请求以及链的结构,发送者和接收者也无须拥有对方的明确信息。 增强了系统的可扩展性。可以根据需要增加新的请求处理类,满足开闭原则。 增强了给对象指派职责原创 2020-12-01 16:06:34 · 120 阅读 · 0 评论