![](https://img-blog.csdnimg.cn/20190918140145169.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java-设计模式篇
文章平均质量分 53
23种设计模式
Alan0517
...
展开
-
设计模式基础篇-14责任链模式(Chain of responsibility)
责任链模式原创 2024-03-10 15:00:01 · 418 阅读 · 0 评论 -
设计模式基础篇-13-组合模式(Composite Pattern)
设计模式之组合模式原创 2022-06-12 16:56:09 · 142 阅读 · 1 评论 -
设计模式基础篇-12-策略模式(Strategy Pattern)
1. 背景假设现在有这么一个方法public class GetMoney { public int getMoney(String way, int distance) { int money = 0; switch (way) { case "test01": money = distance + 1; break; case "test02":原创 2022-03-27 18:34:49 · 673 阅读 · 0 评论 -
设计模式基础篇-11-桥接模式(Bridge Pattern)
1. 背景下面是一些官方的说明,比较晦涩,必须等你有一定的经验后才能理解: 1. 如果一个系统需要在抽象化和具体化之间增加更多的灵活性,避免在两个层次之间建立静态的继承关系,通过桥接模式可以使它们在抽象层建立一个关联关系。“抽象部分”和“实现部分”可以以继承的方式独立扩展而互不影响,在程序运行时可以动态将一个抽象化子类的对象和一个实现化子类的对象进行组合,即系统需要对抽象化角色和实现化角色进行动态耦合。一个类存在两个(或多个)独立变化的维度,且这两个(或多个)维度都需要独立进行扩展。对于那些不希望使原创 2022-03-27 18:18:50 · 490 阅读 · 0 评论 -
设计模式基础篇-10-模板方法模式(Template Method Pattern)
1. 背景源于好莱坞原则假设现在需要做饭,买菜,洗菜,做饭,是固定的三步,具体张三怎么做,李四怎么做,自主实现;类似于这种流程类,且固定流程的,可以采用模板模式;2. 实现2.1 抽象类-做饭/** * 做饭: 买菜,洗菜,做饭 * * @author wql * @date 2022/3/27 17:36 */public abstract class Cook { /** * 固定三步: 买菜,洗菜,做饭,可选的play */ public f原创 2022-03-27 17:49:54 · 210 阅读 · 0 评论 -
设计模式基础篇-09-迭代器模式(Iterator Pattern)
1. ArrayList类引入ArrayList类,当我们在使用它的时候,并没有将它的数据结构(数组)暴露给用户,因为如果暴露了可能会遭到修改,我们将它的内容迭代遍历给用户;定义 : 提供一种方法顺序访问一个容器对象中的各个元素,而又不需要暴露该对象的内部表示。2. 实现由于Java已经天然支持了迭代器模式,所以其实实现很简单,自定义一个类,集成迭代器Iterable<T>接口,然后重构他的Iterator<T> iterator()方法即可;具体案列代码实现:im原创 2021-10-18 11:16:45 · 98 阅读 · 0 评论 -
设计模式基础篇-08-代理模式
1. 简介代理模式就是为其他对象提供一种代理以控制对被代理对象的访问,也就是我们常说的中介;指客户端并不直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象。在现实生活中,这种情形非常的常见,比如请一个律师代理来打官司。2. 静态代理2.1 创建boss接口package aaa;public interface Boss { void visit();}2.2 创建boss接口实现类真实类package aaa;public class RealBoss impl原创 2021-04-27 21:52:53 · 139 阅读 · 0 评论 -
设计模式基础篇-07-适配器模式
1. 简介1.1 模式定义将一个类的接口转换成客户端希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式的形式分为:类的适配器模式 & 对象的适配器模式。1.2 类的适配器模式类的适配器模式是把适配的类的API转换成为目标类的API。1.3 对象的适配器模式与类的适配器模式相同,对象的适配器模式也是把适配的类的API转换成为目标类的API。1.4 与类的适配器模式不同的是对象的适配器模式不是使用继承关系连接到Adaptee类,而是原创 2021-03-15 20:27:19 · 127 阅读 · 0 评论 -
设计模式基础篇-06-外观模式
1. 简介通过创建一个统一的外观类,用来包装子系统中一个 或 多个复杂的类,客户端可通过调用外观类的方法来调用内部子系统中所有方法。2. 代码演示2.1 外观类内部的子系统package facade.subsystem;public class SubSystemOne { public void methodOne() { System.out.println("子系统方法一"); }}package facade.subsystem;publi原创 2021-03-15 20:27:05 · 81 阅读 · 0 评论 -
设计模式基础篇-05-享元模式(Flyweight Pattern)
1. 简介完成缓冲池的创建,来达到缓冲池对象里面复用的功能;1.1 源码案列引入1.1.1 下面代码执行完毕之后,答案会是什么public class FlyweightTest { public static void main(String[] args) { Integer a = Integer.valueOf(127); Integer b = new Integer(127); System.out.println(a == b);原创 2021-03-14 20:56:23 · 140 阅读 · 0 评论 -
设计模式基础篇-04-建造者模式
1.简介1.1 实例说明实例概况背景 :小张希望去中关村买一台组装的台式主机过程中关村老板(Diretor)和小张(Client)进行需求沟通(买来打游戏?学习?看片?)了解需求后,电脑城老板将小张需要的主机划分为各个部件(Builder)的建造请求(CPU、主板…)指挥装机人员(ConcreteBuilder)去构建组件;将组件组装起来成小张需要的电脑(Product)建造者模式最主要的功能是基本方法的调用顺序安排,基本方法已经实现,我们可以理解为零件的装配,顺序不同产生的对象也不同原创 2021-03-14 14:15:04 · 117 阅读 · 0 评论 -
设计模式基础篇-03-抽象工厂模式
1. 简介抽象工厂模式其实就是在简单工厂模式上面,由原来单一的工厂,变成多个工厂的,即增添一个抽象工厂类;1.2 解决的问题是:简单工厂的缺点,当工厂挂了,没办法进行,抽象工厂解决了这个问题;简答工厂模式生产一类产品,抽象工厂生产多个产品1.3 模式组成组成(角色)关系作用抽象产品族(AbstractProduct)抽象产品的父类描述抽象产品的公共接口抽象产品(Product 具体产品的父类描述具体产品的公共接口具体产品(Concrete Pro原创 2021-03-14 13:58:16 · 137 阅读 · 0 评论 -
设计模式基础篇-02-简单工厂模式
1.简介1.1 模式定义简单工厂模式又叫静态方法模式(因为工厂类定义了一个静态方法)现实生活中,工厂是负责生产产品的;同样在设计模式中,简单工厂模式我们可以理解为负责生产对象的一个类,称为“工厂类”。1.2 解决的问题将“类实例化的操作”与“使用对象的操作”分开,让使用者不用知道具体参数就可以实例化出所需要的“产品”类,从而避免了在客户端代码中显式指定,实现了解耦。即使用者可直接消费产品而不需要知道其生产的细节1.3 模式组成组成(角色)关系作用|–|--原创 2021-03-14 12:52:44 · 99 阅读 · 0 评论 -
设计模式基础篇-01-单例模式
1.饿汉式1. 1.直接创建对象,不管你需不需要都会创建 简单直观要点:1.构造器私有化,因为不能让外面去创建实列2.自己创建,用静态变量保存3.向外提供实列4.为了强调这是一个单列,我们可以用final修饰public class Singleton1 { private static final Singleton1 INSTANCE = new Singleton1(); private Singleton1() { }}1. 2. 枚举类型表示原创 2021-03-14 12:39:38 · 125 阅读 · 0 评论