设计模式
文章平均质量分 62
设计模式学习笔记
zzy979
这个作者很懒,什么都没留下…
展开
-
【设计模式】10.组合
定义 组合(composite)模式将对象组合成树形结构以表示“整体-部分”的层次结构 组合模式使得用户能够以一致的方式使用单个对象和组合对象 解决的问题 对于树形的类层次结构,组合模式通过引入一个抽象的组件类作为叶子对象和组合对象(非叶子对象)的父类,使得客户端不需要区分叶子对象和组合对象,而是以一致的方式来操作 组合模式的关键就在于这个抽象类,既可以代表叶子对象又可以代表组合对象 实现 抽象组件类Component:叶子对象和组合对象的公共接口,可以添加、删除、获取子节点(用于组合对象)和执行某种操作(原创 2021-12-02 22:31:22 · 412 阅读 · 0 评论 -
【设计模式】9.桥接
定义 桥接(bridge)模式将抽象部分与它的实现部分分离,使它们可以独立变化 桥接模式将继承关系转化成关联关系,降低了类之间的耦合度,减少了系统中类的数量 解决的问题 当类层次结构的变化有两个维度,一个维度的变化会引起另一个维度进行相应的变化,使得系统扩展起来非常困难 桥接模式将这两个维度分离(将抽象部分与实现部分分离),使其相互独立,从而实现两个部分可以独立变化,使扩展变得简单 示例1:消息系统 考虑一个发送消息的业务功能,消息类型分为普通消息和加急消息,发送方式分为短信和邮件 加急消息可以监控处理进度原创 2021-09-22 20:11:21 · 113 阅读 · 0 评论 -
【设计模式】8.适配器
适配器(adapter)模式通过一个包装类将一个接口转换成客户端期望的另一个接口(可类比为转接线) 类的适配器模式使用继承,对象的适配器模式使用组合 解决的问题 使原本由于接口不兼容而不能一起工作的类可以一起工作 实现 假设目标接口Target定义了一个request()方法: public interface Target { void request(); } 而已存在的类Adaptee(被适配者)有一个specificRequest()方法: public class Adaptee { pub原创 2021-09-16 21:20:42 · 116 阅读 · 0 评论 -
【设计模式】7.外观
外观(facade)模式提供了一个统一的接口,用来访问子系统中的一群接口 解决的问题 降低了客户端与子系统之间的耦合度 简化了复杂子系统的使用 实现 假设有两个子系统: public class Subsystem1 { public void begin() { System.out.println("Subsystem1 begin"); } public void end() { System.out.println("Subsystem1 end"); } } publ原创 2021-09-16 14:57:50 · 78 阅读 · 0 评论 -
【设计模式】6.原型
原型(prototype)模式使用原型对象指定要创建对象的类型,通过克隆原型对象来创建新对象 解决的问题 克隆接口对象时不知道对象的真实类型,因此由对象提供一个克隆自身的方法 实现 原型接口Prototype有一个克隆自身的方法: public interface Prototype { Prototype clone(); } 具体实现类负责创建对象和字段拷贝: public class ConcretePrototype1 implements Prototype { private int x;原创 2021-09-16 14:54:58 · 87 阅读 · 0 评论 -
【设计模式】5.建造者
建造者(builder)模式(也称为生成器模式)用于封装对象的构造过程,允许按步骤构造 最典型的实例:StringBuilder 解决的问题 封装了对象的构造过程,降低了创建对象的复杂度,方便用户创建复杂的对象 实现 假设Product类有a和b两个部件: public class Product { private int a, b; public int getA() { return a; } public void setA(int a) { this.a = a; } public in原创 2021-09-16 14:52:42 · 63 阅读 · 0 评论 -
【设计模式】4.抽象工厂
抽象工厂(abstract factory)模式提供多个接口,用于创建一系列相关的对象(这些对象是相关的,必须一起创建出来),工厂方法模式只用于创建一个对象 解决的问题 解决了工厂方法模式的缺点,每个子工厂类可以创建多种产品 实现 假设ProductA和ProductB接口各有两种实现类: public interface ProductA { } public class ConcreteProductA1 implements Product { } public class Concret原创 2021-09-16 14:49:36 · 73 阅读 · 0 评论 -
【设计模式】3.工厂方法
工厂方法(factory method)模式在父工厂类中定义了一个创建对象的接口,由子工厂类决定实例化哪个类 解决的问题 将实例化操作推迟到子工厂类,解决了简单工厂模式的缺点 实现 假设Product接口有两种实现类: public interface Product { } public class ConcreteProduct1 implements Product { } public class ConcreteProduct2 implements Product { } 父工厂类原创 2021-09-16 14:46:41 · 93 阅读 · 0 评论 -
【设计模式】2.简单工厂
简单工厂(simple factory)模式将实例化操作单独放到一个简单工厂类中,让简单工厂类来决定应该实例化哪个具体子类 解决的问题 将实例化操作与使用对象的操作分离,客户端不再需要知道有哪些子类以及应当实例化哪个子类,实现了客户端和具体子类的解耦 实现 假设Product接口有三种实现类: public interface Product { } public class ConcreteProduct1 implements Product { } public class Concret原创 2021-09-16 14:42:03 · 80 阅读 · 0 评论 -
【设计模式】1.单例模式
单例模式(singleton pattern)确保一个类只有一个实例,并提供该实例的全局访问点 使用一个私有构造函数、一个私有静态变量以及一个公有静态函数来实现 私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量 实现 线程不安全 public class Singleton { private static Singleton instance; private Singleton() {} public static Singleto原创 2021-09-16 14:29:13 · 92 阅读 · 0 评论