
设计模式
文章平均质量分 59
希望用浅显的语言来展示23种设计模式。
李秀才
生活不只有苟且,还有诗和远方。
展开
-
设计模式专栏——观察者模式(Observer)
观察者模式(Observer Pattern),又称为发布订阅模式(Publish/subscribe),当观察对象的状态发生变化时,会通知给观察者。这种类型的设计模式属于行为型设计模式。它的核心结构有四个角色:观察对象(Subject)、具体观察对象(ConcreteSubject)、观察者(Observer)、具体的观察者(ConcreteObserver)(1)Subject角色:表示观察对象,里面订阅了订阅、取消订阅、通知观察者的方法,并且维护了观察者的实例。(2)ConcreteSub原创 2022-01-16 23:04:54 · 569 阅读 · 0 评论 -
设计模式专栏——状态模式(State)
状态模式(State Pattern),当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。这种类型的设计模式属于行为型设计模式。它的核心结构有三个角色:状态(State)、具体状态(ConcreteState)、上下文(Context)(1)State角色:抽象状态,定义了根据不同状态进行不同处理的接口,和Context提供的接口对应。(2)ConcreteState角色:表示各个具体的状态,它实现了State接口,State中定义的一个接口,对应这里的一个具体的类。原创 2022-01-16 16:33:55 · 921 阅读 · 0 评论 -
设计模式专栏——模板方法模式(Template Method)
模板方法模式(Template Method) ,在父类抽象类中定义处理流程的框架,在子类中实现具体的处理,父类中会调用子类中实现的方法。这种类型的设计模式属于行为型设计模式。它的核心结构有两个角色:抽象类角色(AbstractClass)、具体类角色(ConcreteClass)。(1)AbstractClass角色:不仅负责实现模板方法,还声明在模板方法中所使用到的抽象方法。(2)ConcreteClass角色:实现了AbstractClass中定义的抽象方法,实现的方法将会在Abstrac原创 2022-01-13 21:05:13 · 497 阅读 · 0 评论 -
设计模式专栏——代理模式(Proxy)
代理模式(Proxy Pattern)为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。它的核心结构有三个角色:抽象主体角色(Subject)、真实主体角色(RealSubject)、代理角色(Proxy)。(1)Subject角色:定义了RealSubject和Proxy角色中共同的接口。(2)RealSubject角色:实现了Subject中定义的接口。(3)Proxy角色:除原创 2022-01-09 17:36:26 · 350 阅读 · 0 评论 -
设计模式专栏——外观模式(Facade)
概述外观模式(Facade Pattern),又称为门面模式,是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使得子系统更容易使用。这种类型的设计模式属于结构型设计模式。类图示例库存服务public class StockService { static AtomicInteger atomicInteger = new AtomicInteger(); /** * 初始化库存数量 */原创 2022-01-06 08:30:00 · 576 阅读 · 0 评论 -
设计模式专栏——享元模式(FlyWeight)
享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型设计模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。它的核心结构有四个角色:抽象享元角色(AbstractFlyWeight)、具体享元角色(ConcreteFlyWeight)、享元工厂(FlyWeightFactory)、客户端(Client)。(1) 抽象享元角色:为具体享元角色规定了必须实现的方法,在Java中可以是抽象类,可以是接口。(2) 具体享元角原创 2022-01-04 22:03:56 · 1100 阅读 · 0 评论 -
设计模式专栏——装饰器模式
概述装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。它的核心结构有四个角色:抽象构件(Component)、具体构件(ConcreteComponent)、抽象装饰器(Decorator)、具体装饰器(ConcreteDecorator)我们通过下面的实例来演示装饰器模式的用法。我们以手抓饼原创 2021-12-27 08:15:00 · 438 阅读 · 0 评论 -
设计模式专栏——组合模式
概述组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。...原创 2021-12-24 23:50:27 · 382 阅读 · 0 评论 -
设计模式专栏——桥接模式
桥接模式(Bridge Pattern)属于结构型设计模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。将抽象部分与它的实现部分分离,使它们都可以独立地变化。它的核心结构有四个角色:抽象化角色(Abstraction)、扩展抽象化角色(RefinedAbstraction)、实现化角色(Implementor)、具体实现化角色(Concretelmplementor)。举个生活中的例子,汽车有多种类型,SUV、轿车、轿跑等等,这个类型可以不断扩充,然后汽车是由具体的原创 2021-12-15 00:10:21 · 498 阅读 · 0 评论 -
设计模式专栏——适配器模式
适配器模式(Adapter Pattern)属于结构型设计模式,也被成为Wrapper模式。将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。适配器模式有以下两种。类适配器模式(使用继承的适配器)对象适配器模式(使用委托的适配器)本节将以此展开这两种的介绍。原创 2021-12-13 23:16:19 · 827 阅读 · 0 评论 -
设计模式专栏——原型模式
概述 原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。它的核心结构有两个角色:原型抽象类(Prototype)、具体的原型(Concre...原创 2021-11-18 08:15:00 · 739 阅读 · 0 评论 -
设计模式专栏——抽象工厂模式
抽象工厂模式(Abstract Factory),属于创建型设计模式,用于产品族的构建。抽象工厂是指当有多个抽象角色时使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体情况下,创建多个产品族中的产品对象。它的核心结构有四个角色:抽象产品(AbstractProduct)、具体产品(ConcreteProduct)、抽象工厂(AbstractFactory)、具体工厂(ConcreteFactory)。原创 2021-11-14 23:01:44 · 573 阅读 · 0 评论 -
设计模式专栏——建造者模式
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。它的核心结构有三个角色:建造者(Builder)、具体的建造者(ConcreteBuilder)、Director(监工)。原创 2021-11-16 08:00:00 · 399 阅读 · 0 评论 -
设计模式专栏——工厂方法模式
工厂方法模式(Pactory Method),属于创建型设计模式,在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做遵循了开闭原则,当需求变化,新增了产品时,我们不需要去修改原来的代码,只需要新增一个工厂子类就好了。它的核心结构有四个角色:抽象产品、具体产品、抽象工厂、具体工厂。原创 2021-11-14 00:29:13 · 429 阅读 · 0 评论 -
设计模式专栏——单例模式
单例模式(Singleton),属于创建型设计模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。单例模式,大致可分为五类:饿汉模式、懒汉模式、双重检查锁、静态内部类、枚举。原创 2021-10-27 23:38:39 · 259 阅读 · 0 评论 -
设计模式之——策略模式
在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法我们以邮件的发送来解释怎么使用策略模式来替换掉冗余的代码策略接口MailStrategyService.javapublic interface MailStrategyService { /** * * 策略名称 * @return */ public String getStrategyNam原创 2021-05-09 23:44:30 · 251 阅读 · 1 评论