![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 64
我们一直在路上
这个作者很懒,什么都没留下…
展开
-
什么是中介者模式?
一、定义中介者模式又称调解着模式或调停着模式。用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散。属于行为型模式。二、生活场景在我们生活当中如果你去租房子,没有中介的时候可能需要自己去找房源,房东和租客是一个网状结构。当我们有了中介以后,我们找房子可以直接找中介。三、例子在rpc(远程过程调用)出现之前,类与类之间是相互依赖的。导致服务之间不好管理,存在服务治理问题,后来引入注册中心(中介),服务与服务之间得以管理。伪代码public class R原创 2022-03-16 14:17:38 · 1086 阅读 · 0 评论 -
什么是备忘录模式?
一、定义备忘录模式又称快照模式,或者令牌模式。是指在不破坏封装的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态,属于行为型模式。二、通用写法及其uml发起人角色(Originator):负责创建一个备忘录,记录自身需要保存的状态,具备状态回滚功能备忘录角色(Memento):用于存储Originator的内部状态,可以防止Originator以外的对象访问备忘录管理员角色(Caretaker):负责存储。提供管理员备忘录,无法对备忘录内容进行操原创 2022-03-11 15:40:58 · 3001 阅读 · 7 评论 -
什么是命令模式?
一、命令模式的定义命令是对命令的封装,每一个命令都是一个操作,请求方发出请求,接收方接收请求,并执行操作。命令模式解耦了请求方和接收方,命令模式属于行为型模式二、命令模式的uml图和通用写法uml通用写法/** * 功能:命令的抽象 */public interface ICommand { void execute();}/** * 功能:具体的命令 */public class ConcreteCommand implements ICommand{原创 2022-03-03 19:32:38 · 10084 阅读 · 0 评论 -
什么是迭代器模式?
一、定义迭代器模式又叫游标模式,它提供一种按顺序访问集合/容器的方法,无需报漏内部集合表示。属于行为型结构模式二、url图上图包括4个角色:抽象迭代器(Iterator):抽象迭代器负责定义访问和遍历元素的接口具体迭代器(MyListIterator):提供具体的元素遍历行为抽象容器(List):负责定义提供具体迭代器的接口具体容器(MyList):创建具体迭代器三、源码场景JDK当中就提供Iterator我们看具体的ArrayList 的实现具体的集合当中实现了自己的迭代器。原创 2022-02-28 22:33:04 · 1263 阅读 · 0 评论 -
什么是享元模式?
一、什么是享元模式?享元模式(Flyweight pattern)又叫轻量级模式,是对象池的一种标签。类似线程池,线程池可以避免不停的创建和销毁对象,消耗系能。享元模式可以减少对象数量,其宗旨是共享细粒度对象,将多个对同一对象的访问集中起来,属于结构型设计模式二、享元模式的写法极其uml图1.享元模式的uml图:主要的3个角色1.抽象享元角色(IFlyweight): 享元对象抽象基类或接口,同时定义出对象的外部状态和内部状态的接口或实现。2.具体享元角色(ConcreteFlyweight)原创 2021-03-28 23:07:30 · 3837 阅读 · 2 评论 -
java中的设计原则
开闭原则(Open-Closed Principle, OCP)是指一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。强调的是用抽象构建框架,用实现扩展细节。可以提高软件系统的可复用性及可维护性。是最广泛应用的原则。依赖倒置原则(Dependence Inversion Principle,DIP)是指设计代码结构时,高层模块不应该依赖底层模块,二者都应该依赖其抽象。抽象不应该依赖细节;细...原创 2020-05-03 01:33:37 · 185 阅读 · 0 评论 -
什么是装饰者模式?
一、 什么是装饰者模式装饰者模式又称包装模式,是指不改变原有对象的基础上,将功能附加到对象上,提供了比继承更有弹性的替代方案.属于结构型设计模式.二、装饰者模式uml图装饰器其中包含4个角色:抽象组件(Component): 可以是一个接口或者抽象类,规定了被装饰者的行为.具体组件(ConcreteComponent): 实现或继承(component)的一个具体对象.也即被装饰者....原创 2020-05-08 14:40:25 · 2179 阅读 · 0 评论 -
什么是门面模式?
一、什么是门面模式门面模式又称外观模式.提供了一个统一的接口用来访问子系统的一群接口.主要特征是提供了一个高层接口,让子系统更容易使用,属于结构型模式.二、门面模式的uml图门面模式包含的2个角色.外观角色(FacadeService):又称门面角色.系统对外的统一接口.子系统角色(SubSystem): 可以同时有一个或者多个的SubSystem.每个SubSystem都不是一个类,...原创 2020-05-07 10:32:15 · 3404 阅读 · 0 评论 -
装饰模式和适配器模式的区别
装饰模式和适配器模式的区别原创 2019-12-16 23:38:36 · 115 阅读 · 0 评论 -
什么是策略模式?
一、特点1.最终执行结果是固定的2.执行过程和执行逻辑不一样怎么理解这2个特点可以通过下面的举例去理解二、举例说明1.如果我们去北京,我们可以通过很多方式过去1). 坐火车2).坐高铁3).坐飞机4).坐汽车…不管选择什么样的交通工具.我们去北京这个目的地是固定的(第一个特点)我们坐不同的交通工具前往,过程是不一样的(第二个特点)这个交通方式,我们就可以把它看做是一个一个...原创 2019-11-22 22:20:25 · 164 阅读 · 0 评论 -
简单分析动态代理实现原理
一、jdk的动态代理这里拿jdk的动态代理来做例子,cglib的原理其实也是一样的我们知道jdk的动态代理,必须实现接口.1、定义接口/** * 明星类 */public interface Mingxing { /** * 唱歌 */ public void sing() ; /** * 吃东西 */ pu...原创 2019-09-22 18:01:30 · 392 阅读 · 0 评论 -
什么是原型模式?
一、定义将一个对象的属性,依赖关系复制产生一个新的对象二、实现方式讲到原型模式.大家可能想到的就是克隆clone.1.克隆模式1). 浅拷贝实现Cloneabl接口public class Student implements Cloneable {private String name;private Integer age;private List<String...原创 2019-09-15 22:42:34 · 566 阅读 · 1 评论 -
如何打破单例模式?又如何避免?
一、下面是大家都比较熟悉单例模式-饿汉式public class Singleton {public Singleton(){}public static final Singleton singleton = new Singleton();public static Singleton getInstance() { return singleton;}}二、怎么打...原创 2019-09-09 00:51:35 · 419 阅读 · 0 评论