设计模式
文章平均质量分 55
Lucifer Zhao
热爱软件开发,渴望提升自我;
希望我的指尖具有改变世界的力量
展开
-
设计模式——访问者模式(Visitor Pattern)
访问者模式(Visitor Pattern)是一种将数据结构与数据操作分离的设计模式。是指封装一些作用于某种数据结构中的各元素的操作,可以在不改变数据结构的前提下定义作用于这些元素的新的操作。属于行为型模式。...原创 2022-06-05 23:45:11 · 157 阅读 · 0 评论 -
设计模式——观察者模式(Observer Pattern)
观察者模式(Observer Pattern)又叫发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听(Souce/Listener)模式或从属者(Dependents)模式。原创 2022-06-05 18:49:49 · 212 阅读 · 0 评论 -
设计模式——状态模式(State Pattern)
状态模式(State Pattern)又称状态机模式,是允许对象在内部状态发生改变时改变他的的行为,类的行为由状态决定,不同的状态有着不同的行为,对象看起来好像修改了它的类。属于行为型模式。一般涉及到电商订单相关的,会采用状态模式来设计,不同的订单状态,响应的都有不同的操作。适用场景1) 行为随状态改变而改变的场景2) 一个操作中含有庞大的多分支结构,并且这些分支取决于对象的状态状态抽象对象.........原创 2022-06-04 00:31:30 · 3378 阅读 · 0 评论 -
设计模式——解释器模式(Interpreter Pattern)
解释器模式(Interpreter Pattern)给定一个语言,定义规则的一种表示,定义一个解释器,来解释语言中的句子。为了解释一种语言,为此语言而创建的解释器,可以看作是语法分析工具。属于行为型模式。解释器接口框架中解释器JDK中正则的解释器Pattern,Spring中表达式的解释器ExpressionParser...原创 2022-06-03 22:33:00 · 138 阅读 · 0 评论 -
设计模式——中介者模式(Mediator Pattern)、命令模式(Command Pattern)
中介者模式(Mediator Pattern)又称为调节者模式,用一个中介对象封装一系列的对象交互,使各对象之间不需要显示的直接相互作用,从而使其松耦合。通过中介者解耦各层次对象的直接耦合,层次对象的对外依赖交给中介处理。属于行为型模式。命令模式(Command Pattern)是对命令的封装,每一个命令都是一个操作,请求的一方发出请求要求执行一个操作,接收的一方接收到请求并执行操作;命令模式解耦了请求和处理...原创 2022-06-03 19:39:42 · 210 阅读 · 0 评论 -
设计模式——迭代器模式(Iterator Pattern)
迭代器模式(Iterator Pattern)又称为游标模式,它提供一种顺序访问集合/容器元素的方法,而又无须暴露集合内部表示。本质是抽取集合对象迭代的行为到迭代器中,提供一致的访问接口。属于行为型模式......原创 2022-06-02 23:35:39 · 174 阅读 · 0 评论 -
设计模式——备忘录模式(Memo Pattern)
备忘录模式又称为快照模式(Snapshot Pattern),在不破坏封装的前提下,捕获一个对象的内部状态,并将状态保存在对象之外,这样以后就可以将此对象恢复到初始保存的状态,类似于“后悔药”。属于行为型模式。原创 2022-05-13 20:38:08 · 282 阅读 · 0 评论 -
设计模式——装饰器模式(Decorator Pattern)
定义:装饰器模式(Decorator Pattern)也叫包装模式(Wrapper Pattern),是指在不改变原有对象基础上,将功能附加到对象上,提供了比继承更有弹性的替代方案,可以扩展原有对象的功能。属于结构型模式。生活中的装饰器模式:煎饼(可以加鸡蛋,可以加火腿,可以加肉),蛋糕(可以做奶油的,可以做水果的,还可以加巧克力,可以加好看的装饰品)适用场景:用于扩展一个类的功能或给一个类添加附加职责,可以动态的给一个类添加功能,这些功能可以再动态撤销。优点:缺点:框架:抽象组件,原创 2022-05-11 20:31:01 · 229 阅读 · 0 评论 -
设计模式——门面模式(Facade Pattern)
定义:门面模式又叫外观模式,提供了一个统一的接口,用来访问子系统中的一群接口。门面模式定义了一个高层接口,让子系统更方便使用。属于结构型模式。适用场景:子系统越来越复杂,增加门面模式提供简单接口。构建多层系统结构,利用门面模式作为每层的入口,简化层与层之间的调用。生活中的门面模式:前台接待员,导诊台,包工头。优点:简化了调用的过程,无需深入了解子系统,以防给子系统带来风险 减少系统以来,松散耦合 可以更好的划分访问层次,提高了安全性,比如MVC三层架构 遵循迪米特法则(最少知道原则)原创 2021-03-25 22:53:15 · 586 阅读 · 1 评论 -
设计模式——组合模式、委派模式、模板方法模式
组合模式(Composite Pattern)定义:组合模式也成为整体--部分模式,宗旨是通过将单个对象和组合对象用相同的接口进行表示。使客户端对单个对象和组合对象保持一致的方式处理。属于结构型模式。适用场景:希望客户端可以忽略组合对象和单个对象的差异时;对象层次具备整体和部分,呈树形结构时。委派模式(Delegate Pattern)定义:委派模式又称委托模式,基本作用是负责任务的调度和任务分配,将任务的分配和执行分离开来,可以看做是一种特殊情况下的静态代理的全权处理。属于行为型模式,不是原创 2022-05-10 23:47:55 · 433 阅读 · 0 评论 -
设计模式——享元模式(Flyweight Pattern)
定义:享元模式又称轻量级模式,是对象池的一种实现,类似于线程池,可以避免频繁的创建销毁对象,消耗性能。目的是共享对象资源,将多个对同一对象的访问集中起来。属于结构型模式。应用场景:经常应用与系统底层开发,当有大量相似对象,或者相同对象需要频繁创建、销毁,需要用到缓冲池的场景。// 享元工厂:类似于线程池统一管理对象public class FlyweightFactory { private static Map<String, IFlyweight> pool =原创 2022-05-09 23:01:34 · 362 阅读 · 0 评论 -
设计模式——桥接模式(Bridge Pattern)
定义:桥接模式也称为桥梁模式、接口模式或柄体模式,是将抽象部分与它的具体实现部分分离,使它们都可以独立的变化。通过组合的方式建立两个类的联系,而不是继承。属于结构型模式。适用场景:在抽象和具体实现之间需要增加更多灵活性的场景 一个类存在两个或多个独立变化的维度,而这两个或多个维度都需要独立进行扩展 不希望使用继承,多层继承导致系统类的个数剧增,而桥接模式可以让多个维度下的多层继承关系独立开,并且还能建立连接桥接模式的优点:分离抽象部分和具体实现部分 提高了系统的扩展性 符合开闭原则原创 2022-05-09 22:00:45 · 409 阅读 · 0 评论 -
设计模式——责任链模式(Chain of Responsibility Pattern)
责任链模式是将链中的每一个节点看作是一个对象,每个节点处理的请求都不相同,且内部自动维护下一个节点对象。每个请求从链式首端发出,沿着链依次经过每个节点,如果当前节点无法处理自动传递给下一个节点,直到链上某个节点处理完请求,则链结束。属于行为型模式。原创 2022-04-27 00:15:52 · 837 阅读 · 0 评论 -
设计模式——策略模式(Strategy Pattern)
定义:策略模式又将政策模式,将算法家族提取封装起来,可以避免if...else...和switch语句大量出现在我们代码中,属于行为型模式。原创 2022-04-26 22:20:11 · 602 阅读 · 0 评论 -
设计模式——代理模式(Proxy Pattern)
代理模式是指为其他对象对象提供一个代理,控制对这个对象的访问,保护目标对象。代理对象在目标对象和客户端之间起中介作用。属于结构型设计模式。生活中的代理模式:房产中介、快递小哥、黄牛党。适应场景:当需要保护目标对象,增强目标对象功能时需要用到代理模式。代理模式的优点:代理模式能将代理对象与真实被调用目标对象分离 一定程度上降低了系统的耦合程度,易于扩展 代理可以起到保护目标对象,增强目标对象职责的作用代理模式的缺点:代理会造成系统中类的数量增加 在客户端和目标对象之间增加了一个代理原创 2021-03-24 15:48:04 · 120 阅读 · 0 评论 -
设计模式——建造者模式(Builder Pattern)
建造者模式是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。特征:用户只需要指定需要构建类型就可以获得对象,不需要了解构建过程和细节。属于创建型模式。原创 2021-03-21 21:01:45 · 168 阅读 · 0 评论 -
设计模式——原型模式(Prototype Pattern)
定义:原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。属于创建型模式。调用者不需要知道任何创建细节,不调用构造函数创建,直接拷贝。简化了产生对象的繁琐的过程,不需要通过构造方法去构造。适用场景:类初始化消耗资源较多 new产生对象的过程非常繁琐(数据准备,访问权限等) 构造函数比较复杂,不走构造函数,直接复制 循环体中需要生产大量对象时BeanUtils.copyProperties(source, target);...原创 2021-03-19 22:16:13 · 227 阅读 · 0 评论 -
设计模式——适配器模式(Adapter Pattern)
适配器模式又叫变压器模式。它的功能是将一个类的接口变成客户端所期待的另一个类的接口,从而使原本因接口不匹配而无法一起工作的两个类可以一起工作。属于结构型设计模式。原创 2021-05-26 22:00:44 · 220 阅读 · 0 评论