- 博客(19)
- 收藏
- 关注
原创 观察者(Observer)模式08-31
观察者(Observer)模式定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。优点:降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系。符合依赖倒置原则。目标与观察者之间建立了一套触发机制。缺点:目标与观察者之间的依赖关系并没有完全解除,而且有可能出现循环引用。当观察者对象很多时,通知的发布会花费很多时间,影响程序的效率。结构:抽象主题(Su
2021-09-01 21:22:17
95
原创 状态(State)模式08-30
状态(State)模式定义:对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。优点:结构清晰,状态模式将与特定状态相关的行为局部化到一个状态中,并且将不同状态的行为分割开来,满足“单一职责原则”。将状态转换显示化,减少对象间的相互依赖。将不同的状态引入独立的对象中会使得状态转换变得更加明确,且减少对象间的相互依赖。状态类职责明确,有利于程序的扩展。通过定义新的子类很容易地增加新的状态和转换。缺点:状态模式的使用必然会增加系统的类与
2021-08-31 21:21:11
123
原创 责任链(Chain of Responsibility)模式08-28
责任链(Chain of Responsibility)模式定义:为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。优点:降低了对象之间的耦合度。该模式使得一个对象无须知道到底是哪一个对象处理其请求以及链的结构,发送者和接收者也无须拥有对方的明确信息。增强了系统的可扩展性。可以根据需要增加新的请求处理类,满足开闭原则。增强了给对象指派职责的灵活性。当工作流程发生变化,
2021-08-28 21:53:53
110
原创 命令(Command)模式08-27
命令(Command)模式定义:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。优点:通过引入中间件(抽象接口)降低系统的耦合度。扩展性良好,增加或删除命令非常方便。采用命令模式增加与删除命令不会影响其他类,且满足“开闭原则”。可以实现宏命令。命令模式可以与组合模式结合,将多个命令装配成一个组合命令,即宏命令。方便实现 Undo 和 Redo 操作。命令模式可以与后面介绍的备忘录模式结合,
2021-08-27 21:29:33
144
原创 策略模式(Strategy)08-25
策略模式(Strategy)定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。优点:多重条件语句不易维护,而使用策略模式可以避免使用多重条件语句,如 if…else 语句、switch…case 语句。策略模式提供了一系列的可供重用的算法族,恰当使用继承可以把算法族的公共代码转移到父类里面,从而避免重复的代码。策略
2021-08-25 21:08:19
251
原创 模板方法(Template Method)模式08-24
模板方法(Template Method)模式定义:定义一个操作中的算法骨架,将算法的一些步骤延迟到子类中,使子类可以不改变该算法结构的情况下重新定义该算法的某些特定步骤。是一种类行为模式。优点:封装了不变部分,扩展可变部分。把认为是不变部分的算法封装到父类中实现,把可变部分算法由子类继承实现,便于子类继续扩展。在父类中提取公共的部分代码,便于代码复用。部分方法是由子类实现的,因此子类可以通过扩展方式增加相应的功能,符合开闭原则。缺点:对每个不同的实现都需要定义一个子类,这会导致类的个
2021-08-24 16:50:11
140
原创 组合模式(Composite Pattern)08-23
组合模式(Composite Pattern)定义:又叫整体-部分(Part-Whole)模式,是一种将对象组合成树状的层次结构的模式,用来表示“整体-部分”的关系,使用户对单个对象和组合对象具有一致的访问性,属于结构型设计模式。组合模式一般用来描述整体与部分的关系,将对象组织到树形结构中,顶层的节点被称为根节点,根节点下面可以包含树枝节点和叶子节点,树枝节点下面又可以包含树枝节点和叶子节点。根节点和树枝节点本质上属于同一种数据类型,可以作为容器使用,而叶子节点与树枝节点在语义上不属于同一种类型
2021-08-23 17:45:56
134
原创 适配器模式08-12
适配器模式定义:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容的类可以一起工作。适配器模式分为类结构型模式和对象结构型模式两种,类结构型模式耦合度高,且要求程序员了解现有组件库的相关组件的内部结构,所以应用相对较少。优点:客户端通过适配器可以透明的调用目标接口。复用了现存的类,不需要修改原有代码而重用现有的适配器类。将目标类和适配器类解耦,解决了目标类和适配器类接口不一致的问题。在很多业务场景中符合开闭原则。缺点:适配器编写过程需要结合业务场景全面考虑,可能会增加
2021-08-22 16:22:16
151
原创 桥接模式08-16
桥接模式定义:将抽象与实现分离,使他们可以独立变化。用组合关系代替继承关系来实现,从而降低抽象和实现的耦合度。桥接模式遵循了里氏原则和依赖倒置原则,实现了开闭原则,对修改关闭,对扩展开发。优点:抽象与实现分离,扩展能力强。符合开闭原则。符合合成复用原则。实现细节对客户透明。缺点:由于聚合关系建立在抽象层,要求开发者针对抽象化进行设计与编程,能正确地识别出系统中两个独立变化的维度,这增加了系统的理解与设计难度。结构:抽象化(Abstraction)角色:定义抽象类,包含一个对实现
2021-08-19 15:16:56
102
原创 代理模式08-11
代理模式定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。优点:代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用。代理对象可以扩展目标对象的功能。代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度,增加了程序的可扩展性。缺点:代理模式会造成系统设计中类的数量增加。在客户端和目标对象之间增加一个代理对象,会造成请求处理速度变慢。增加了系统的复杂度。可
2021-08-11 15:58:04
99
原创 建造者模式08-10
建造者模式定义:将一个复杂对象的构造与他的表示分离,使同样的构建过程可以创建不同的表示,这个的设计模式称为创造者模式,将一个复杂对象分解为多个简单的对象,然后一步一步构成。他将变与变相分离,即产品的组成部分是不变的,但每一部分可以灵活选择。优点:封装性好,构建和表示分离。扩展性好,每个具体的建造者相互独立,有利于系统的解耦。客户端不需要知道产品内部组成的细节,建造者可以对创建过程逐步细化,而不对其他模块产生任何影响,便于控制细节风险。缺点:产品的组成部分必须相同,限制了其使用范围。如
2021-08-10 18:07:38
97
原创 抽象工厂08-09
抽象工厂模式定义:抽象工厂是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无需指定所要产品的具体类就可以得到同族的不同等级的产品模式结构。抽象工厂模式是工厂方法模式的升级版本,工厂方法模式只生产一个等级的产品,而抽象工厂模式可生产多个等级的产品。抽象工厂模式要满足:系统中有多个产品族,每个具体工厂创建同一族但属于不同等级结构的产品。系统一次只可能消费其中某一族产品,即同族的产品一起使用。优点:抽象工厂模式具有工厂方法模式的优点。可以在类的内部对产品族中相关联的多等级产
2021-08-09 17:50:38
92
原创 工厂方法模式08-08
工厂方法模式工厂方法模式是对简单工厂模式的进一步程序化,好处是可以使系统不修改原来的代码就可以引进新产品,即满足开闭原则。优点:用户只需要知道具体工厂的名称就可以的都所要的产品,不需要知道产品具体的创建过程。灵活性强,对于新产品创建只要多写一个对应的工厂类。典型的解耦框架。高层模块只需要知道产品的抽象类,不需要知道其他实现类,满洲迪米特法则,依赖倒置原则和里氏替换原则。缺点:类的个数容易过多,增加复杂度。增加了系统的抽象性和理解难度。抽象产品只能生产一种产品,这个问
2021-08-09 09:50:44
89
原创 简单工厂模式08-07
简单工厂模式定义:定义一个工厂类,可以根据参数的不同返回不同类的实例,被创建的实例通常有共同的父类。在简单工厂模式中创建实例的方法为静态方法,所以简单工厂模式又叫静态工厂方法模式。优点:工厂类要包含必要的逻辑判断,可以决定在什么时候创建哪个产品实例。客户端可以免除直接创建产品对象的职责,工厂和产品的职责区分明确。客户端不需要知道所创建的具体产品名,只需要知道参数就可。可以引入配置文件,在不修改客户端代码的情况下更换和添加新的具体产品类。缺点:工厂类单一,负责所以产品的创建,职责过重。
2021-08-07 18:15:11
109
原创 原型模式08-06
原型模式定义:用于创建重复的对象,同时保证性能。优点:性能上比new一个对象更加优良。简化了创建对象的过程,在需要恢复到历史某一状态时,可以辅助实现撤销操作。缺点:需要每一个类都要配置一个clone方法。clone方法位于类的内部,对已经有的类进行改造时,需要修改代码,违背开闭原则。实现深克隆需要编写复杂代码,而且当对象之间存在多重嵌套引用时,每层对象对应的类必须支持深克隆,较难实现。原型模式的结构抽象原型类:规定了具体原型对象必须实现的接口。具体原型类:实现抽象原型类的cl
2021-08-06 18:44:57
118
原创 单例模式笔记8.5
单例模式单例模式的定义与特点定义:指一个类只有一个实例,且该类可以自己创建这个实例的一种模式。单例模式在现实生活中的应用广泛,J2EE标准中的ServletContext和ServletContextConfig、Spring框架应用中的Application Context、数据库中的连接池等也是单例模式。特点:1.单例类只有一个实例对象;2.该单例对象必须由单例类自己创建;3.单例类对外提供一个访问该单例的全局访问点;单例模式的优缺点优点:1.单例模式可以保证内存里只有一个实例,减少
2021-08-06 08:39:16
140
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅