设计模式
设计模式
追風者0x8ffd98a8
只想见见天地。
展开
-
行为型模式之策略模式
行为型模式之策略模式 该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。 角色: 抽象策略(Strategy)类:给出所有的具体策略所需的接口。 具体策略(Concrete Strategy)类:实现了抽象策略定义的接口,提供具体算法实现或行为。 环境(Context)类:持有一个策略类的引用,最终给客户端调用。 策略模式就是环境类聚合抽象策略类,通过多态调用不同的具体策略类,实现调用不同的算法。 ...原创 2021-08-18 15:26:52 · 50 阅读 · 0 评论 -
行为型模式之模板方法模式
行为型模式之模板方法模式 模板方法模式:定义一个操作中的算法骨架,将算法的实现延迟到子类中。 角色: 抽象类(Abstract Class):负责给出一个算法的轮廓和骨架。它由一个模板方法和若干个基 本方法构成。 模板方法:定义了算法的骨架,按某种顺序调用其包含的基本方法。 基本方法:是实现算法各个步骤的方法,是模板方法的组成部分。基本方法又可以分为三 种: 抽象方法(Abstract Method) :一个抽象方法由抽象类声明、由其具体子类实现。 具体方法(Concrete Method)原创 2021-08-18 15:12:00 · 72 阅读 · 0 评论 -
结构型模式之享元模式
结构型模式之享元模式 享元模式就是通过共享已经存在的对象,减少需要创建的对象。 享元模式的内部状态与外部状态 内部状态,即不跟随环境改变而改变的可共享部分。 外部状态,随外部改变而改变的不可共享的部分。 角色划分 抽象享元角色(Flyweight):通常是一个接口或抽象类,在抽象享元类中声明了具体享元类公共方法,这些方法可以向外界提供享元对象的内部数据(内部状态),同时也可以通过这些方法设置外部数据(外部状态)。 具体享元(Concrete Flyweight)角色:它实现了抽象享元类,称为享元对象;原创 2021-08-18 14:55:20 · 67 阅读 · 0 评论 -
结构型模式之组合模式
结构型模式之组合模式 用于把一组相似的对象当作一个单一的对象。 组合模式依据树形结构来组合对象,用来表示部分与整体的层次。 角色: 抽象根节点(Componet):定义系统各层次对象的共有方法和属性,可以预定一些默认行为和属性。 树枝节点(Composite):定义树枝节点的行为,存储子节点,组合数值节点和叶子节点形参树形结构。 叶子节点(Leaf):叶子节点对象,其下再无分支,是系统层次遍历的最小单位。 ...原创 2021-08-18 14:34:45 · 52 阅读 · 0 评论 -
结构型模式之外观模式
结构型模式之外观模式 外观模式就是:通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用不用关心内部子系统的具体细节,降低程序复杂度。 角色: 外观(Facade)角色:为多个子系统对外提供一个共同的接口。 子系统(Sub System):实现系统的部分功能,客户可以通过外观角色访问它。 核心:外观角色聚合各个子系统类,在外观角色内部为其赋值和调用,完成业务功能。 优点: 降低子系统与客户端耦合 对客户屏蔽了子系统组件,减少使用复杂度。 缺原创 2021-08-18 14:16:07 · 53 阅读 · 0 评论 -
结构型模式之桥接模式
结构型模式之桥接模式 桥接模式的目的是将实现与抽象分离,使它们可以独立变化;用组合关系代替继承关系来实现的,从而降低了抽象和实现的耦合。 角色: 抽象化(Abstraction)角色:定义抽象类,并包含一个对实现化化对象的引用。 扩展抽象化(Refind Abstraction)角色:是抽象化角色的子类,实现父类业务方法,并通过组合关系调用实现化角色中的业务方法。 实现化(Implementor)角色:定义实现化角色的接口,供扩展抽象化角色调用。 具体实现化(Concrete Implementor)角色原创 2021-08-18 13:49:33 · 54 阅读 · 0 评论 -
结构型模式之装饰者模式
结构型模式之装饰者模式 装饰者模式的目的在于:在不改变现有对象结构的情况下,动态的给该对象增加一些功能。 角色: 抽象构件(Component)角色:定义一个抽象接口用以规范逐步接口附加功能的对象。 具体构件(Concrete Component)角色:实现抽象构建,通过装饰角色为其添加一些职责。 抽象装饰(Decorator)角色:继承或实现抽象构件,并包含具体构建的实例,可以通过其子类扩展具体构建的功能。 具体装饰(Concrete Decorator)角色:实现抽象装饰的相关方法,并给具体构建对象添原创 2021-08-16 15:56:29 · 155 阅读 · 0 评论 -
结构型模式之适配器模式
结构型模式之适配器模式 结构型模式分为类结构型模式和对象结构型模式;其中类结构型模式采用的是继承的方式来实现,而对象结构型模式采用的是聚合来实现的。 角色: 目标(Target)接口:当前系统业务所期待的接口,它可以是抽象类或接口。 适配者(Adaptee)类:它是被访问和适配的现存组件库中的组件接口。 适配器(Adapter)类:它是一个转换器,通过继承或聚合适配者的对象,把适配者接口转换成目标接口,让客户通过按目标接口的格式访问适配者。 类适配器模式 实现方法:继承适配者类,实现目标接口。 /**原创 2021-08-16 15:14:08 · 54 阅读 · 0 评论 -
结构型模式之代理模式
结构型模式之代理模式 代理模式:访问对象不适合直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。 角色: 抽象主题(Subject)类:通过接口或抽象类声明真实主题和代理对象实现的业务方法。 真实主题(Real Subject)类:实现了抽象主题中的具体业务,是代理对象所代表的真实对象,是最终要引用的对象。 代理(Proxy)类:提供与真实主题相同的接口,其内部包含对真实主题的引用,它可以访问、控制或扩展真实主题的功能。 一般代理分三种模式: 静态代理:代理类实现抽象主题类,聚合真实主题类,原创 2021-08-16 14:57:18 · 55 阅读 · 0 评论 -
创建者模式之工厂模式
创建者模式之工厂模式 工厂模式目的在于:原本对具体对象的耦合转变为对工厂的耦合;使用工厂来获取具体对象。 简单工厂模式 简单工厂中的角色: 抽象产品:定义产品规范,描述产品的主要特性和功能 具体产品:实现或继承抽象产品的子类 具体工厂:提供创建产品的方法,调用者通过该方法获取产品对象 简单工厂就是将具体对象的创建封装在工厂中,根据参数返回创建的对象。 优点: 创建具体产品对象过程,与业务逻辑分开。 缺点: 增加新产品还需要更改工厂代码。 静态工厂 与简单工厂相比,就是将工厂中的创建方法转变为静态的,可直原创 2021-08-08 11:40:04 · 68 阅读 · 0 评论 -
创建型模式之建造者模式
创建型模式之建造者模式 建造者模式分为两个部分,构造和装配,是产品本身与产品创建过程的解耦。 建造者模式中有四种角色,分别是: 抽象建造者类(Buider):规定哪些部件要实现,而不涉及具体实现。 具体建造者类(ConcreteBuilder):实现Buider接口,完成复杂产品的各个部件的具体创建方法,在构造过程完成后,提供产品实例。 产品类(Product):要创建的复杂对象 指挥者类(Director):调用具体建造者创建复杂对象各个部分,在指挥者类中不涉及具体产品的信息,只负责保证对原创 2021-08-05 21:13:49 · 65 阅读 · 0 评论 -
创建者模式之原型模式
创建者模式之原型模式 原型模式:就是创建多个相同性质类时,可以创建出一个后进行克隆创建其他的类。 应用场景: 应用于当创建类耗费时间的情况下,还需要创建多个性质相同的类,可以new一个类后,其他的进行克隆生产。(但个人感觉鸡肋) 原型模式有两个基本条件,一个是抽象原型类,一个是具体原型类。抽象原型类在jdk中已经封装好了,只需要实现Cloneable接口即可,重写clone方法。 抽象原型类中规定了克隆方法,具体原型类对抽象原型类进行继承后,通过继承到的clone方法进行克隆对象。 浅克隆与深克隆 浅克隆:原创 2021-08-05 09:47:13 · 65 阅读 · 0 评论 -
创建者模式之单例模式
创建者模式之单例模式 文章目录创建者模式之单例模式单例模式简介创建单例模式的方式破坏单例模式解决破坏单例模式 单例模式简介 只能通过该类的某一方法来创建其对象,不能通过new来创建其对象;同时还要确保该类的对象从始至终只能创建一个对象。 这个类体需要提供一个访问其唯一对象的方法。 创建单例模式的方式 饿汉式单例模式 —— 静态成员变量 // 饿汉式 —— 当类被创建时,对象就已经被创建出来。 // 1. 私有构造方法 防止被new创建对象。 private Singleton(){原创 2021-07-20 22:13:56 · 90 阅读 · 0 评论