23种常见设计模式
文章平均质量分 70
HairLossException
这个作者很懒,什么都没留下…
展开
-
23种设计模式之原型模式
文章目录原型模式浅拷贝原型模式原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。原型模式包含以下角色:抽象原型类:规定了具体原型对象必须实现的clone()方法具体原型类:实现了抽象原型类的clone()方法,它是可以被复制的对象访问类:使用具体原型类中的clone()方法来复制新对象原型模式的克隆分为浅原创 2022-03-18 21:19:32 · 3155 阅读 · 0 评论 -
23种设计模式之抽象工厂模式
文章目录抽象工厂模式抽象产品具体产品抽象工厂具体工厂抽象工厂模式的优缺点适用场景对比于工厂方法模式,抽象工厂模式是工厂方法模式的升级版,工厂方法模式只生产一种产品,抽象工厂可以生产多种产品。开始认识抽象工厂模式前我们先认识两个概念级别:同种类产品称为同等级别产品族:将同一个具体工厂所生产的位与不同等级的一组产品比如华为手机、华为电脑、华为平板可以说是同一产品族。而华为手机和苹果手机可以说是同一级别抽象工厂模式抽象工厂模式(Abstract Factory Pattern)隶属于设计模式中原创 2022-03-18 08:00:00 · 594 阅读 · 1 评论 -
23种设计模式之工厂方法模式
文章目录工厂方法模式回顾 简单工厂模式 ,它虽然实现了对象创建和使用的分离,但是每新增个产品就要修改工厂类 还是违背了OCP开闭原则工厂方法模式工厂方法模式(FACTORY METHOD)是一种常用的类创建型设计模式,此模式的核心精神是封装类中变化的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期维护拓展的目的。它的核心结构有以下四个角色抽象产品:定义了产品的规范,描述了产品的主要特征和功能具体产品:实现了抽象产品定义的接口,由具体工厂创建抽象工厂:提供了创建原创 2022-03-17 20:23:19 · 650 阅读 · 0 评论 -
设计模式之简单工厂模式
文章目录简单工厂模式抽象产品具体产品工厂类简单工厂模式的优缺点简单工厂模式简单工厂模式又叫做静态工厂方法模式属于创建型模式。简单工厂模式专门定义一个类来负责创建其他类的实例,由这个类来封装实例化对象的行为,被创建的实例通常都具有共同的父类。简单工厂模式并不是23种设计模式之一,反而比较向一种编程习惯。 简单工厂包括:抽象产品:定义了产品的规范,描述了产品的主要特性和功能具体产品:实现或者继承抽象产品的子类具体工厂:提供了创建产品的方法,调用者通过方法来创建产品【案例】假设有家卖手机的线下门原创 2022-03-16 22:46:32 · 382 阅读 · 0 评论 -
23种设计模式之单例模式
文章目录单例模式饿汉式懒汉式—线程不安全懒汉式—线程安全双检锁式登记式/静态内部类反射机制破坏单例模式解决方法反序列化破坏单例模式解决方法枚举单例模式单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。单例模式有以下几种实现方式饿汉方式懒汉式—线程不安全:懒汉式—线程安全:双检锁式登记式/静态内部类枚举饿汉式将构造方法设置成私有方法,其他类无法new对象,从而保证只有一原创 2022-03-16 16:07:39 · 507 阅读 · 0 评论 -
设计模式之备忘录模式
备忘录模式备忘录模式(Memento Pattern)又叫快照模式,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。备忘录模式的主要角色如下:发起人角色(Originator):记录当前时刻的内部状态信息,提供创建备忘录和恢复备忘录数据的功能,实现其他业务功能,它可以访问备忘录里的所有信息。备忘录角色(Memento):负责存储发起人的内部状态,在需要的时候提供这些内部状态给发起人。管理者角色(Caretaker):对备原创 2022-03-26 19:00:00 · 493 阅读 · 0 评论 -
设计模式之迭代器模式
迭代器模式迭代器模式(Iterator Pattern)提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。迭代器模式主要包含以下角色:抽象聚合角色(Aggregate):定义存储、添加、删除聚合元素以及创建迭代器对象的接口。具体聚合角色(ConcreteAggregate):实现抽象聚合类,返回一个具体迭代器的实例。抽象迭代器角色(Iterator):定义访问和遍历聚合元素的接口,通常包含 hasNext()、next() 等方法。具体迭代器角色(Concretelte原创 2022-03-26 00:00:00 · 601 阅读 · 0 评论 -
设计模式之观察者模式
观察者模式观察者模式又被称为发布订阅模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象, 这个主题对象在状态变化时会通知所有观察者对象,使它们能制动更新自己。在观察者模式中,主体是通知的发布者,它发出通知时并不需要知道谁是它的观察者,可以有任意数目的观察者订阅并接收通知。观察者模式的主要角色抽象主题(抽象被观察者):把所有观察者对象保存在集合中,提供一个接口可以增加和删除观察者具体主题角色(具体被观察者):将有关状态存入具体观察者对象,在具体主题内部的状态发生变化时,给所有原创 2022-03-25 11:13:36 · 402 阅读 · 0 评论 -
设计模式之中介者模式
中介者模式中介者模式(Mediator Pattern)又叫调停模式,定义一个中介角色来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式包含以下主要角色:抽象中介者角色(Mediator):它是中介者的接口,提供了同事对象注册与转发同事对象信息的抽象方法。具体中介者角色(ConcreteMediator):实现中介者接口,定义一个 List 来管理同事对象,协调各个同事角色之间的交互关系,因此它依赖于同事角色。抽象同事类角色(Colleague):原创 2022-03-25 23:45:00 · 134 阅读 · 0 评论 -
设计模式之责任链模式
责任链模式责任链模式(Chain of Responsibility Pattern)又名职责链模式,为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。职责链模式主要包含以下角色:抽象处理者角色(Handler):定义一个处理请求的接口,包含抽象处理方法和一个后继连接。具体处理者角色(Concrete Handler):实现抽象处理者的处理方法,判断能否处理本次请求,如果可以原创 2022-03-25 19:45:00 · 497 阅读 · 0 评论 -
设计模式之命令模式
命令模式将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行存储、传递、调用、增加与管理。命令模式包含以下主要角色:抽象命令类(Command)角色: 定义命令的接口具体命令(Concrete Command)角色:实现命令接口。通常会持有接收者,并调用接收者的功能来完成命令要执行的操作。实现者/接收者(Receiver)角色:真正执行命令的对象。任何类都可能成为一个接收者,只要它能够实现命令要求实现的相应功能。调用者/请求原创 2022-03-24 23:45:00 · 147 阅读 · 0 评论 -
设计模式之策略模式
策略模式该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。策略模式的主要角色如下:抽象策略(Strategy)类:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。具体策略(Concrete Strategy)类:实现了抽象策略定义的接口,提供具体的算法实现或行为。环境(Context)类原创 2022-03-24 19:00:00 · 584 阅读 · 0 评论 -
23种设计模式之模板方法模式
文章目录模板方法模式模板方法模式的优缺点使用场景模板方法模式模板方法模式法(Template Method)定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。模板方法模式包含以下主要角色:抽象类(Abstract Class):负责给出一个算法的轮廓和骨架。它由一个模板方法和若干个基本方法构成。模板方法:定义了算法的骨架,按某种顺序调用其包含的基本方法。基本方法:是实现算法各个步骤的方法。基本方法又可以分为三种:抽象原创 2022-03-23 23:45:00 · 982 阅读 · 0 评论 -
23种设计模式之享元模式
文章目录享元模式享元模式的优缺点使用场景享元模式享元模式(Flyweight Pattern)运用共享技术来有效地支持大量细粒度对象地复用,它通过已经存在的对象来大幅度减少需要创建地对象地数量,避免大量相似对象的开销,从而提高系统的利用率。享元模式存在的两种状态内部状态:不会随着环境改变而改变的可共享的部分外部状态:指随着环境改变而改变的不可共享的部分享元模式主要角色:抽象享元角色(Flyweight):通常是一个接口或者抽象类,在抽象享元类中声明具体享元类的公共方法,这些方法可以向外界原创 2022-03-23 15:16:22 · 508 阅读 · 0 评论 -
23种设计模式之组合模式
文章目录组合模式组合模式的优缺点使用场景组合模式组合模式(Composite Pattern),又叫部分整体模式。它创建了对象组的树形结构,将对象组合成树状结构以表示整体-部分的层次关系。组合模式能让客户端以一致的方式处理个别对象以及组合对象。组合模式主要包括以下主要角色:抽象根节点(Component):定义系统各层次对象共有的方法和属性,可以预先定义一些默认行为和属性树枝结点(Composite):定义树枝结点的行为,存储子结点,组合树枝结点和叶子结点形成一个树状结构叶子结点(Leaf):叶原创 2022-03-22 21:46:15 · 296 阅读 · 0 评论 -
23种设计模式之外观模式
文章目录外观模式外观模式的优缺点使用场景外观模式外观模式又叫门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一的接口,外部应用不用关心内部子系统的具体细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性,外观模式包括以下主要角色:外观角色:为多个子系统对外提供一个共同的接口子系统角色:实现系统的部分功能,客户可以通过外观角色访问它【案例】小明的爷爷已经60多岁了,一个人在家生活。每次都需要打开灯、打开电视、打开空调,睡觉是原创 2022-03-22 19:22:11 · 384 阅读 · 0 评论 -
23种设计模式之桥接模式
桥接模式桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是用组合关系代替继承关系来实现的,从而降低了抽象和实现两个可变维度的耦合性,桥接吗模式包含以下主要角色抽象化角色:定义抽象类,并包含一个对实现化对象的引用扩展抽象化角色:抽象化角色的子类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法实现化角色:定义实现化角色接口,供扩展抽象化角色调用具体实现化角色:给出实现化角色接口的具体实现【案例】现对不同手机类型的不同品牌实现看电影、玩游戏、打电话功能传统方式原创 2022-03-20 15:17:37 · 3562 阅读 · 0 评论 -
23中设计模式之适配器模式
文章目录适配器模式类适配器对象适配器接口适配器模式适配器模式适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,适配器模式将一个类的接口适配成用户所期待的。共有两类适配器模式:类适配器模式这种适配器模式下,适配器继承自已实现的类(一般多重继承)对象适配器模式在这种适配器模式中,适配器容纳一个它包裹的类的实例。在这种情况下,适配器调用被包裹对象的物理实体类适配器适配器模式包含以下主要角色:目标接口:当前系统业务所期待的接口,它原创 2022-03-20 13:58:34 · 489 阅读 · 0 评论 -
23种设计模式之代理模式
文章目录代理模式静态代理JDK动态代理CGLIB动态代理代理模式的优缺点代理模式的使用场景代理模式为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理模式有以下角色:抽象角色:通过接口或抽象类声明真实角色实现的业务方法真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用(目标类)代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自原创 2022-03-19 20:52:15 · 1075 阅读 · 0 评论 -
23种设计模式之建造者模式
文章目录建造者模式产品类抽象建造者类具体建造者类指挥者类客户端创建者模式的优缺点适用场景建造者模式的扩展建造者模式、工厂模式、抽象工厂模式的对比建造者模式建造者模式是设计模式的一种,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。分离了部件的构造(由Builder来负责)和装配(由Director负责)从而构建出复杂的对象,这个模式适用于:某个对象的构建过程复杂的情况。由于实现了构建和装配的解耦,不同的构建器,相同的装配可以创建出不同的对象。相同的构建器不同的装配顺序也可以创建原创 2022-03-19 14:53:06 · 259 阅读 · 0 评论