
设计模式
文章平均质量分 72
czq_lh
愿你看尽世间繁华,归来任是少年。
展开
-
设计模式(十五)——行为型模式——访问者模式(Visitor)
定义:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构进行分离,是行为类模式中最复杂的一种模式。优点:(1)扩展性好。能够在不修改对象结构中的元素的情况下,为对象结构中的元素添加新的功能。(2)复用性好。可以通过访问者来定义整个对象结构通用的功能,从而提高系统的复用程度。(3)灵活性好。访问者模式将数据结构与作用于结构上的操作解耦,使得操作集合可相对自由地演原创 2022-04-29 09:00:00 · 374 阅读 · 0 评论 -
设计模式(十一)——结构型模式——组合模式(Composite)
定义:又叫部分-整体模式,它是一种将对象组合成树状的层次结构的模式,用来表示“部分-整体”的关系,使用户对单个对象和组合对象具有一致的访问性。优点:(1)组合模式使得客户端代码可以一致地处理单个对象和组合对象,无须关心自己处理的是单个对象,还是组合对象,这简化了客户端代码;(2)更容易在组合体内加入新的对象,客户端不会因为加入了新的对象而更改源代码,满足“开闭原则”;缺点:(1)设计较复杂,客户端需要花更多时间理清类之间的层次关系;(2)不容易限制容器中的构件;(3)不容易用继承的方原创 2022-04-28 15:00:00 · 270 阅读 · 0 评论 -
设计模式(十)——结构型模式——桥接模式(Bridge)
定义:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。如果软件系统中某个类存在两个独立变化的维度,通过该模式可以将这两个维度分离出来,使两者可以独立扩展,让系统更加符合“单一职责原则”。优点:由于抽象与实现分离,所以扩展能力强;其实现细节对客户透明。缺点:由于聚合关系建立在抽象层,要求开发者针对抽象化进行设计与编程,这增加了系统的理解与设计难度。结构与实现可以将抽象化部分与实现化部分分开,取消二者的继承关系,改用组合关系。原创 2022-04-28 08:00:00 · 145 阅读 · 0 评论 -
设计模式(十四)——行为型模式——状态模式(State)
定义:对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。应用程序中的有些对象可能会根据不同的情况做出不同的行为,我们把这种对象称为有状态的对象,而把影响对象行为的一个或多个动态变化的属性称为状态。当有状态的对象与外部事件产生互动时,其内部状态会发生改变,从而使得其行为也随之发生改变。优点:(1)状态模式将与特定状态相关的行为局部化到一个状态中,并且将不同状态的行为分割开来,满足“单一职责原则”。(2)减少对象间的相互依赖。将不同的状态引入独原创 2022-04-30 09:00:00 · 389 阅读 · 0 评论 -
设计模式(十二)——行为型模式——策略模式(Strategy)
定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。优点:(1)多重条件语句(比如if)不易维护,而使用策略模式可以避免使用多重条件语句。(2)策略模式提供了一系列的可供重用的算法族,恰当使用继承可以把算法族的公共代码转移到父类里面,从而避免重复的代码。(3)策略模式可以提供相同行为的不同实现,客户可以根据不同时间或空原创 2022-04-28 10:00:00 · 165 阅读 · 0 评论 -
设计模式(十三)——行为型模式——观察者模式(Observer)
定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。优点:(1)降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系。(2)目标与观察者之间建立了一套触发机制。缺点:(1)目标与观察者之间的依赖关系并没有完全解除,而且有可能出现循环引用。(2)当观察者对象很多时,通知的发布会花费很多时间,影响程序的效率。模式的结构与实现实现观察者模式时要注意具体目标对.原创 2022-04-29 10:00:00 · 582 阅读 · 0 评论 -
设计模式(九)——结构型模式——装饰模式(Decorator)
定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式。优点:(1)采用装饰模式扩展对象的功能比采用继承方式更加灵活。(2)可以设计出多个不同的具体装饰类,创造出多个不同行为的组合。缺点:(1)装饰模式增加了许多子类,如果过度使用会使程序变得很复杂。装饰模式的结构与实现通常情况下,扩展一个类的功能会使用继承方式来实现。但继承具有静态特征,耦合度高,并且随着扩展功能的增多,子类会很膨胀。如果使用组合关系来创建一个包装对象(即装饰对象)来包裹真实对象,并.原创 2022-04-27 10:00:00 · 166 阅读 · 0 评论 -
设计模式(八)——结构型模式——适配器模式(Adapter)
引入:笔记本电脑的工作电压是20V,而我国的家庭用电是220V,如何让20V的笔记本电脑能够在220V的电压下工作?答案是引入一个电源适配器(AC Adapter),俗称充电器或变压器,有了这个电源适配器,生活用电和笔记本电脑即可兼容定义:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式和对象结构型模式两种,类结构型模式类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些,而且java不原创 2022-04-26 10:00:00 · 544 阅读 · 0 评论 -
设计模式(七)——结构型模式——代理模式(Proxy)
代理模式(Proxy)定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。目的:(1)保护目标对象(2)增强目标对象。优点:(1)代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用;(2)代理对象可以扩展目标对象的功能;(3)代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度;缺点:(1)在客户端和目标对象之间增加一个代理对象,会造成请求处理速度变慢;原创 2022-04-25 10:00:00 · 390 阅读 · 0 评论 -
设计模式(六)——创建型模式——原型模式(Prototype)
概念:原型模式的思想是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象。使用场景:主要应用与那些创建新对象的成本过大时。优点:简化了新对象的创建过程,提高了效率,同时原型模式提供了简化的创建结构。实现方式:(1)创建一个原型类,实现Cloneable接口,覆写clone方法,此处clone方法可以改成任意的名称,因为Cloneable接口是个空接口。深复制和浅复制都可以重写clone方法来实现。(2)深复制还可以通过序列化来实现。引用复制:将原对象的引用直接赋给新对象,是原创 2022-04-24 10:00:00 · 212 阅读 · 0 评论 -
设计模式(五)——创建型模式——建造者模式(Builder)
概念:建造者模式又名生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的对象。用户只需要指定复杂对象的类型就可以得到该对象,而无须知道其内部的具体构造细节。优点:(1)产品的建造和表示分离,实现了解耦。(2)隐藏了产品的建造细节,用户只需关心产品的表示,而不需要了解是如何创建产品的。(3)体现了开闭原则,如果需要再生产其他共享单车,只需要再开一条生原创 2022-04-23 10:00:00 · 218 阅读 · 0 评论 -
设计模式(四)——创建型模式——抽象工厂模式(Abstract Factory)
介绍:抽象工厂是围绕一个超级工厂创建其他工厂,该超级工厂又称为其他工厂的工厂。提供一个相关或相互依赖对象的接口,而无需指定他们具体的类。在抽象工厂模式中,抽象产品可能是一个或多个,从而构成一个或多个产品族。在只有一个产品族的情况下,抽象工厂模式实际上退化到工厂方法模式。定义:与工厂方法模式不同的是,工厂方法模式中的工厂只生产单一的产品,而抽象工厂模式中的工厂生产多个产品。使用场景:系统的产品多于一个产品族,而系统只消费某一族的产品。优点:当一个产品族中的多个对象被设计成一起工作时,它能保证客户端原创 2022-04-22 10:00:00 · 242 阅读 · 0 评论 -
设计模式(三)——创建型模式——工厂模式(Factory)
工厂模式(Factory)概念:封装对象的创建,为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。1、简单工程模式原创 2022-04-21 10:52:48 · 357 阅读 · 0 评论 -
设计模式(二)——创建型模式——单例模式(Singleton)
单例模式(Singleton)定义:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。优点:节约系统资源、提高了系统效率,同时也能够严格控制客户对它的访问。缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。实现思路:让类的构造方法私有化,同时提供一个静态方法去实例化这个类。单例模式大致有四种写法,懒汉式、饿汉式、...原创 2019-07-10 21:29:37 · 333 阅读 · 0 评论 -
设计模式(一)——介绍
1、概念设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。2、设计模式的分类设计模式可分为三大类:(1)创建型模式:对象实例化的模式,创建型模式用于解耦对象的实例化过程。共五种:工厂方法模式、单例模式、抽象工厂模式、建造者模式、原型模式。(2)结构型模式:把类或对象结合在一起形成一个更大的结构。共七种:代理模式、适配器模式、装饰器模式、外观模式、桥接模式、组合模原创 2020-08-21 11:18:43 · 200 阅读 · 0 评论