设计模式
文章平均质量分 84
23种设计模式
九月清晨柳成荫
磨砺修仙,法力无边。
展开
-
职责链模式 - 一个有顺序且有等级的模式
在生活中,一件事情需要经过多个对象处理是比较常见的场景。比如,请假流程。假设有这样一个设定:直属领导可批准2天以内的假期,二级领导可以批准4天以内的假期,一级领导可以批准7天以内的假期(最多只可7天)。那么员工必须根据请假的天数找不同的领导申请,这样是比较麻烦的,员工需要记住具体的领导的相关信息。那么有没有这样一种方式:员工只需要提交请假申请到自己的直属领导,无需关心其他领导的信息,就能得到处理?那么答案就是:职责链模式(责任链模式)。1、定义为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求原创 2021-08-03 10:26:27 · 684 阅读 · 1 评论 -
模板方法模式 - 父类定义步骤的模式
现实生活中很多事情都包含几个实现步骤,例如请客吃饭,无论吃什么,一般都包含点单、吃东西、买单等几个步骤,通常情况下这几个步骤的次序是点单->吃东西->买单。但是第二步吃东西里,到底是先吃汉堡还是先吃鸡肉卷,这个步骤是可变的。定义定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得一个子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。结构AbstractClass(抽象类)在抽象类中定义一系列基本操作,这些基本操作可以是具体的,也可以是抽象的,每一个基本操作对原创 2020-10-26 20:29:30 · 338 阅读 · 0 评论 -
策略模式 - 合适的方案才是最好的方案
在很多情况下,实现某个目标的途径不止一条,例如在外出旅游时游客可以选择多种不同的出行方式,如骑自行车、坐汽车、坐火车、坐飞机,根据实际情况选择最合适的一种出行方式。定义定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法可以独立于使用它的客户而变化。结构Context(环境类)环境类是使用算法的角色,它在解决某个问题时可以采用多种策略。在环境类中维持一个对抽象策略类的引用实例,用于定义所采用的策略。Strategy(抽象策略类)抽象策略类为所支持的算法声明抽象方法,是所有原创 2020-10-26 19:52:24 · 299 阅读 · 0 评论 -
装饰模式 - 给已有的功能增加额外的职责
对新房进行装修并没有改变房屋用于居住的本质,但它可以让房子变得更漂亮,更能满足居家需求。装饰模式可以在不改变一个对象本身的基础上给对象增加额外的新行为,在现实生活中到处存在这种情况。定义动态的给一个对象增加一些额外的职责。就扩展而言,装饰模式提供了一种比使用子类更加灵活的替代方案。结构Component(抽象构件)它是具体构件和抽象装饰类的共同父类,声明了在具体的构件中实...原创 2020-10-26 19:07:55 · 328 阅读 · 0 评论 -
单例模式 - 饿汉式与懒汉式详解
单例模式分为两种,一种是饿汉式,一种是懒汉式。一、饿汉式单例类public class HungrySingleton { // 类加载,初始化 private static final HungrySingleton instance = new HungrySingleton(); private HungrySingleton() {} public static ...原创 2019-12-03 11:58:22 · 5538 阅读 · 0 评论 -
工厂方法模式 - 抽象工厂与抽象产品的结合
工厂方法模式是在简单工厂模式上再加了一层,添加了一个抽象工厂和具体工厂。即不再使用一个工厂类来统一负责所有产品的创建,而是把创建具体产品的任务交给了专门的工厂子类去完成。比如说,我要生产矩形、圆形、菱形这三种形状,就不再使用一个工厂了,而是让矩形工厂、圆形工厂、菱形工厂去完成,而这三个工厂又是形状工厂(抽象工厂)的子工厂。如果我们想要新生产一个椭圆形,只需要新增一个椭圆形工厂就行,让椭圆形工厂去完...原创 2020-10-26 11:14:58 · 342 阅读 · 0 评论 -
抽象工厂模式 - 产品等级与产品族的纠缠
工厂方法模式中的每个具体工厂只有一个或者一组重载的工厂方法,只能生产一种产品,可能会导致系统中存在大量的工厂类,会增加系统的开销。有时候需要工厂可以提供多种产品对象,而不是单一的产品对象。例如一个电器工厂,它可以生产电视、电冰箱、洗衣机、空调之类的。这时候就可以将一些相关产品组成一个产品族,由一个工厂来统一生产。产品等级结构即产品的继承结构,如一个抽象类是电视机,其子类包括海尔电视机...原创 2020-10-26 11:17:56 · 557 阅读 · 0 评论 -
简单工厂模式 - 工厂模式基础之魂
简单工厂模式并不属于GoF的23种经典模式,但它通常作为其他工厂模式的基础。定义定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。结构Factory(工厂角色)即工厂类,它是简单工厂模式的核心。负责创建所有产品实例的内部逻辑,它可以直接被外界直接调用,用来创建所需要的产品对象。该类内部提供一个静态方法factoryMethod(),用...原创 2020-10-26 10:48:20 · 155 阅读 · 0 评论