![](https://img-blog.csdnimg.cn/20190927151043371.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
设计模式
逐个分析
https://github.com/yangxinle1999/Design-pattern
m0_64571176
这个作者很懒,什么都没留下…
展开
-
P14 组合模式
一、定义用于管理整体与部分的数据组织,类似一棵树,提供一个抽象接口,让根节点、树节点和叶子结点具有一致的行为接口,并在抽象接口中定义其添加和移除等公共行为的设计模式二、类图工作模式,客户端访问component时,有统一的接口add、remove、get,既可以对叶子结点操作,也可以对树枝结点操作,对应全局遍历可以使用递归实现三、例子公司的组织结构、文件目录结构注意,因为树枝结点可以存储子结点,所以具有组合关系,见图中的组合结构...原创 2022-02-19 21:06:57 · 148 阅读 · 0 评论 -
P13 外观模式
一、定义Facade模式,为一组具有相似功能的类的集群,提供一个一致的,简单的界面,这个界面被称作facade。二、类图Facade,外观,Client不感知底层由多少个系统,它只是去调用,具体怎么调用, 那就看外观里有多少种方法了三、代码public class Facade { private SystemA systemA = new SystemA(); private SystemB systemB= new SystemB(); private.原创 2022-01-17 23:41:20 · 216 阅读 · 0 评论 -
P12 代理模式
一、定义为其他对象提供一种代理,从而控制对要访问的对象的访问二、类图1、静态代理Client持有IProxy,创建Tabao实例,在TaoBao实例的构造函数中,关联到Shopping真正发起构买时,通过Proxy触发,先执行Taobao的buy,再执行Shopping的buy,client不直接和Shopping交互2、动态代理由jdk生成代理对象:当访问proxy的方法时,实际访问的是handler里的代理三、代码public class Shop.原创 2022-01-17 00:06:16 · 228 阅读 · 0 评论 -
P11 享元模式
一、定义FlyWeight模式,构造型模式,通过与其他类似的对象共享数据,从而减小内存二、类图工作流程:测试class,首先创建享元工厂,内部维护一个map,以key-value存储,value代表的是共享元素:IFlyWeightElem接口的作用是为了保证在工厂的元素具有一致性,可以不带接口,例如共享String,只要是一样的元素即可。创建好工厂后,当测试类通过工厂来获取元素时,如果map中有元素,直接返回元素对象,如果没有元素,先创建后,存入map,再返回,从而实现元素共原创 2022-01-11 23:34:25 · 178 阅读 · 0 评论 -
P10 观察者模式
一、定义当一个对象的状态发生变化时,能通知关联的其他对象,自动刷新状态二、类图三、代码首先,要实现两个接口Observer和Observable,工作流程:实现前者的,需要重写update方法,当后者变化时,就会回调update方法,当实现后者的对象创建时,需要调用addObserver方法,把回调方法注册上才会执行public class Main { public static void main(String[] args) { Cha原创 2022-01-11 22:59:21 · 158 阅读 · 0 评论 -
P9 策略模式
一、定义策略模式是行为模式之一对一系列算法做封装,为所有算法定义一个抽象的接口,并通过继承该接口实现所有算法的封装和实现,具体算法由使用方选择,该模式主要用于算法的平滑切换二、类图工作流程:Executor持有策略的接口,具体实现在初始化时,由构造传入接口实现可以有多个,例如MethodA/B/C/D...等,构造出执行机后,执行execute方法,自动执行对应的策略,因为执行机是由接口组成,因此使用了组成的uml图,组成执行机后,即可实现不同策略的执行代码:/..原创 2022-01-10 23:41:05 · 152 阅读 · 0 评论 -
P8 装饰模式
一、定义装饰模式又称为包装模式,通过一种对客户端透明的方式来扩展对象的功能,是继承关系的一个替代方案。二、类图工作过程:先创建一个基本basecar,实现基本功能,如果要新增功能抽象类负责1、限制入参必须是car2、设置要修饰的主角:Car3、继承基本功能装饰结果有两个,如果是飞,fly,则继承后,传入一个基本basecar,然后再show里除了获取基本basecar的功能,再额外添加fly功能即可然后创建三、代码public interfac.原创 2022-01-07 00:06:57 · 49 阅读 · 0 评论 -
P7 建造者模式
一、定义建造者模式,即为builder模式,又称为生成器模式,用于隐藏复合对象的创建过程二、例子如果要建造一个房子,需要建造底板、墙、屋顶等首先新建接口 IHouseBuilderpublic interface IHouseBuilder { void makeFloor(); void makeWall(); void makeHouseTop(); House getHouse();}实现类//负责创建房间的内部结构publi原创 2022-01-03 11:28:05 · 176 阅读 · 0 评论 -
P6 原型模式
一、作用:创建对象的时候,希望不止创建对象,还要有原型对象的数据对新目标对象的修改,不影响既有的原型对象(深度克隆)二、实现方法:在需要被克隆的类上,实现Cloneable接口三、代码public class person implements Cloneable { private String name; private int age; public String getName() { return name; }原创 2022-01-03 11:08:22 · 212 阅读 · 0 评论 -
P5 单例模式【草稿】
鸽原创 2022-01-03 10:43:32 · 103 阅读 · 0 评论 -
p3 抽象工厂模式【草稿】
鸽原创 2022-01-03 10:44:20 · 111 阅读 · 0 评论 -
P2 工厂方法模式【草稿】
鸽原创 2022-01-03 10:42:04 · 45 阅读 · 0 评论 -
P1 简单工厂模式【草稿】
鸽原创 2022-01-03 10:40:56 · 55 阅读 · 0 评论