
设计模式
ob踏雪者
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
设计模式之命令模式
一、简介二、优缺点三、应用场景四、模式结构1. 主要角色2. UML类图五、代码实现 一、简介 命令(Command)模式的定义如下:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。 二、优缺点 优点: 通过引入中间件(抽象接口)降低系统的耦合度。 扩展性良好,增加或删除命令非常方便。采用命令模式增加与删除命令不会影响其他类,且满足“开闭原则”。 可以实现宏命令。命令模式可以与组合模式结合,将多个命令.原创 2020-12-21 21:48:34 · 249 阅读 · 0 评论 -
设计模式之责任链模式
这里写目录标题一、简介二、优缺点三、应用场景四、模式结构1. 主要角色2. 模式结构五、代码实现 一、简介 责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。 二、优缺点 优点: 降低了对象之间的耦合度。该模式使得一个对象无须知道到底是哪一个对象处理其请求以及链的结构,发送者和接收者也无须拥有对方的明确信息。 增原创 2020-12-21 21:39:06 · 152 阅读 · 0 评论 -
设计模式之迭代器模式
一、简介二、优缺点1. 优点2. 缺点三、应用场景四、模式结构1. 主要角色2. UML类图五、代码实现 一、简介 迭代器(Iterator)模式的定义:提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。 二、优缺点 1. 优点 访问一个聚合对象的内容而无须暴露它的内部表示。 遍历任务交由迭代器完成,这简化了聚合类。 它支持以不同方式遍历一个聚合,甚至可以自定义迭代器的子类以支持新的遍历。 增加新的聚合类和迭代器类都很方便,无须修改原有代码。 封装性良好,为遍历不同的聚合结构提供.原创 2020-12-21 21:30:55 · 132 阅读 · 0 评论 -
设计模式之观察者模式
@TOC 一、简介 观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。 二、优缺点 优点: 降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系。符合依赖倒置原则。 目标与观察者之间建立了一套触发机制。 缺点: 目标与观察者之间的依赖关系并没有完全解除,而且有可能出现循环引用。 当观察者对象很多时,通知的发布会花费很多时间,影响程序的效率原创 2020-12-12 21:31:59 · 198 阅读 · 0 评论 -
设计模式之模板方法模式
一、简介二、优缺点三、应用场景四、模式结构1 .主要角色2. UML类图五、代码实现 一、简介 模板方法(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。 二、优缺点 优点: 它封装了不变部分,扩展可变部分。它把认为是不变部分的算法封装到父类中实现,而把可变部分算法由子类继承实现,便于子类继续扩展。 它在父类中提取了公共的部分代码,便于代码复用。 部分方法是由子.原创 2020-12-12 21:23:49 · 110 阅读 · 0 评论 -
设计模式之策略模式
一、简介二、优缺点三、应用场景四、模式结构1. 主要角色2. UML类图五、代码实现 一、简介 策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。 二、优缺点 优点: 多重条件语句不易维护,而使用策略模式可以避免使用多重条件语句,如 if…else 语句、switch…case 语句。 策略模式.原创 2020-12-12 21:00:55 · 119 阅读 · 0 评论 -
设计模式之享元模式
一、简介二、优缺点三、应用场景四、模式结构1. 主要角色2. UML类图五、代码实现 一、简介 享元(Flyweight)模式的定义:运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似类的开销,从而提高系统资源的利用率。 二、优缺点 优点: 相同对象只要保存一份,这降低了系统中对象的数量,从而降低了系统中细粒度对象给内存带来的压力。 缺点: 为了使对象可以共享,需要将一些不能共享的状态外部化,这将增加程序的复杂性。 读取享元模式的外部状.原创 2020-12-06 21:15:02 · 134 阅读 · 0 评论 -
设计模式之组合模式
一、简介二、优缺点三、应用场景四、模式结构1. 主要角色2. UML类图五、代码实现 一、简介 组合(Composite Pattern)模式的定义:有时又叫作整体-部分(Part-Whole)模式,它是一种将对象组合成树状的层次结构的模式,用来表示“整体-部分”的关系,使用户对单个对象和组合对象具有一致的访问性,属于结构型设计模式。 在组合模式中,整个树形结构中的对象都属于同一种类型,带来的好处就是用户不需要辨别是树枝节点还是叶子节点,可以直接进行操作,给用户的使用带来极大的便利。 二、优缺点 优点: .原创 2020-12-06 21:04:04 · 339 阅读 · 0 评论 -
设计模式之桥接模式
一、简介二、优缺点三、应用场景四、模式结构1. 主要角色2. UML类图五、代码实现 一、简介 桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。 二、优缺点 优点: 抽象与实现分离,分离了抽象部分及其实现部分两个维度,实现了代码的解耦,提高了系统的扩展性。 扩展功能时只需要新增类,无需修改源代码,符合开闭原则。 通过组合而不是继承来实现耦合,符合合成复用原则。 其实现细节对客户透明 缺点: 桥接模.原创 2020-12-06 20:49:50 · 158 阅读 · 0 评论 -
设计模式之外观模式
一、简介二、优缺点三、应用场景四、模式结构1. 模式结构2. UML类图五、代码实现 一、简介 外观(Facade)模式又叫作门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。 在日常编码工作中,我们都在有意无意的大量使用外观模式。只要是高层模块需要调度多个子系统(2个以上的类对象),我们都会自觉地创建一个新的类封装这些子系统,提供精简的接口.原创 2020-12-06 20:35:20 · 304 阅读 · 0 评论 -
设计模式之装饰者模式
@TOC 一、简介 装饰(Decorator)模式的定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式。 二、优缺点 优点: 装饰器是继承的有力补充,比继承灵活,在不改变原有对象的情况下,动态的给一个对象扩展功能,即插即用 通过使用不用装饰类及这些装饰类的排列组合,可以实现不同效果 装饰器模式完全遵守开闭原则 缺点: 装饰模式会增加许多子类,过度使用会增加程序得复杂性。 三、应用场景 1) 当需要给一个现有类添加附加职责,而又不能采用生成子类的方法进行扩充时。原创 2020-12-01 22:11:29 · 133 阅读 · 0 评论 -
设计模式之代理模式
一、简介二、优缺点三、应用场景四、模式结构1. 主要角色2. UML类图五、代码实现 一、简介 代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。 二、优缺点 优点: 代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用; 代理对象可以扩展目标对象的功能; 代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度,增加了程序的可扩展性 缺点: 代理模式会造成系统设计中.原创 2020-12-01 21:52:11 · 181 阅读 · 0 评论 -
设计模式之适配器模式
一、简介二、优缺点三、应用场景四、模式结构1. 主要角色2. UML类图3. 两者结构模型的区别五、代码实现 一、简介 适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。 适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。 二、优缺点 优点: 客户端通过适配器可以透明地调用目标接口。 复用了现存的类,程序员不需要修改原有.原创 2020-12-01 21:42:13 · 117 阅读 · 0 评论 -
设计模式之原型模式
一、简介二、优缺点三、应用场景四、模式结构1. 主要角色2. UML类图五、代码实现1. 浅克隆和深克隆2. 注意事项:3. 浅克隆实现4. 深克隆实现 一、简介 原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。 在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。 二、优缺点 优点: Java 自带的原型模式基于内存二进制流的复制,在性能上比直接 new 一个对象更加优良。 可以.原创 2020-11-22 20:00:47 · 411 阅读 · 2 评论 -
设计模式之建造者模式
一、简介二、优缺点三、应用场景四、模式结构五、代码实现六、建造者模式和工厂模式的区别 一、简介 建造者(Builder)模式的定义:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。 它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。 二、优缺点 优点: 封装性好,构建和表示分离。 扩展性好,各个具体的建造者相互独立,有利于系统的解耦。 客户端不必知道产品内部组.原创 2020-11-22 19:43:52 · 102 阅读 · 1 评论 -
设计模式之单例模式
一、简介二、优缺点三、应用场景四、代码实现 一、简介 1.定义:一个类只能由一个实例,且该实例由其自己创建 2.特点: 只有一个实例对象 实例对象由其本身创建 对外提供全局访问点 二、优缺点 优点: 单例模式可以保证内存里只有一个实例,减少了内存的开销。 可以避免对资源的多重占用。 单例模式设置全局访问点,可以优化和共享资源的访问。 缺点: 单例模式一般没有接口,扩展困难。如果要扩展,则除了修改原来的代码,没有第二种途径,违背开闭原则。 在并发测试中,单例模式不利于代码调试。在调试过程中,如果单.原创 2020-11-22 18:48:47 · 189 阅读 · 2 评论 -
设计模式之工厂模式
法塔赫一、 简单工厂模式1. 简介2. 优缺点3. 应用场景4. 模式结构5. 代码实现二、 工厂方法模式1. 简介2. 优缺点3. 应用场景4. 模式结构5. 代码实现6. 与简单工厂的联系和区别三、 抽象工厂模式1. 简介2. 使用抽象工厂模式一般需要满足的条件3. 优缺点4. 应用场景5. 模式扩展6. 模式结构7. 代码实现8. 与工厂方法模式的联系和区别 一、 简单工厂模式 1. 简介 定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。 我们把被创建的对象称为“产品”原创 2020-11-08 23:13:36 · 1523 阅读 · 0 评论 -
UML类图
一、类图简介 类图(ClassDiagram)是用来显示系统中的类、接口、协作以及它们之间的静态结构和关系的一种静态模型。它主要用于描述软件系统的结构化设计,帮助人们简化对软件系统的理解,它是系统分析与设计阶段的重要产物,也是系统编码与测试的重要模型依据。 类图设计最多的就是类和接口: 类的结构如下所示,共分三层,第一层表示类名,如果是抽象类,则用斜体表示;第二层事类的属性,通常就是字段和属性;第三层是类的操作,即方法和行为。其中 ‘+’ 表示public,‘-’表示private,‘#’表示protect原创 2020-11-08 22:48:24 · 750 阅读 · 0 评论