当前位置: 首页 > news >正文

做平面设计应该在哪个网站求职简单大气三个字公司名字

做平面设计应该在哪个网站求职,简单大气三个字公司名字,直播推广渠道,个人网站的制作方法设计模式 23个设计模式#xff0c;23个意图 1. 设计模式概要 设计模式的核心在于提供了相关问题的解决方案#xff0c;使得人们可以更加简单方便的复用成功的设计和体系结构 设计模式的类别 创建型结构型行为型类工厂方法模式适配器模式#xff08;类#xff09;解释器模…设计模式 23个设计模式23个意图 1. 设计模式概要 设计模式的核心在于提供了相关问题的解决方案使得人们可以更加简单方便的复用成功的设计和体系结构 设计模式的类别 创建型结构型行为型类工厂方法模式适配器模式类解释器模式模版方法模式对象抽象工厂模式生成器模式原型模式单例模式适配器模式对象桥接模式组合模式装饰模式外观模式享元模式代理模式责任链模式命令模式迭代器模式终结者模式备忘录模式观察者模式状态模式策略模式访问者模式 2. 创建型设计模式 2.1 工厂模式简单工厂模式 属于创建型但不属于23中设计模式之一 意图 定义一个工厂类他可以根据参数的不同返回不同类的实例被创建的实例通常都具有共同的父类 违背了开闭原则 2.2 工厂方法模式Factory Method 意图 定义一个用于创建对象的接口让子类决定实例化哪一个类。工厂方法模式使一个类的实例延迟到其子类 主要角色 抽象工厂提供了创建产品的接口调用者通过它访问具体工厂的工厂方法来创建产品。体现了多态具体工厂主要是实现抽象工厂中的抽象方法完成具体产品的创建抽象产品定义了产品的规范描述了产品的主要特性和功能具体产品实现了抽象产品角色所定义的接口由具体工厂来创建同具体工厂一一对应 比如 咖啡工厂接口抽象工厂有创建咖啡对象的方法。其下有两个具体工厂美式咖啡工厂和拿铁咖啡工厂他们去实现父类的接口重写父类的方法。由具体工厂生成具体产品再由具体产品美式咖啡和拿铁咖啡实现抽象产品咖啡 由此要增加产品类时相应地增加工厂类不需要修改工厂类的代码了 注interface接口 对应 implements实现 优点 用户只需要知道具体工厂的名称就可以得到所要的产品无需知道产品的具体创建过程在系统增加新的产品时只需要添加具体产品类和对应的具体工厂类无需对原工厂进行任何修改满足开闭原则对扩展开放对修改关闭 缺点 每增加一个产品就要增加一个具体产品类和一个对应的具体工厂类增加了系统的复杂度 题目描述 当一个类不知道它所必须创建的对象的类的时候当一个类希望由它的子类来指定它所创建的对象的时候当类将创建对象的职责委托各多个帮助子类中的某一个并且你希望将哪一个帮助子类时代理这一信息局部化的时候 2.3 抽象工厂模式 意图 提供一个创建一系列相关或相互依赖对象的接口且访问类无需指定它们具体的类 抽象工厂模式是工厂方法模式的升级版工厂方法模式只能生产一个等级的产品而抽象工厂模式可以生成多个等级的产品 主要角色 抽象工厂提供了创建产品的接口它包含多个创建产品的方法可以创建多个不同等级的产品具体工厂主要是实现抽象工厂中的抽象方法完成具体产品的创建抽象产品定义了产品的规范描述了产品的主要特性和功能抽象工厂有多个抽象产品具体产品实现了抽象产品角色所定义的接口由具体工厂来创建同具体工厂一一对应 比如 咖啡店不仅要生成咖啡还要生成甜品比如提拉米苏、抹茶慕斯等按照工厂方法模式需要定义提拉米苏类、提拉米苏方法、抹茶慕斯类、抹茶慕斯方法容易发生类爆炸情况。抽象工厂中拿铁咖啡、美式咖啡是一个产品等级咖啡提拉米苏、抹茶慕斯是一个产品等级甜点拿铁咖啡、提拉米苏是同意产品族意大利风味美式咖啡、抹茶慕斯是同一产品族美式风味 即抽象工厂接口下有两个具体工厂意大利风味和美式风味两个具体工厂生成其下相应地具体产品再由具体产品去实现抽象产品咖啡和甜点 优点 当一个产品族中的多个对象被设计成一起工作时它能保证客户端始终只使用同一个产品族中的对象 缺点 当产品族中需要增加一个新的产品时所有的工厂都需要修改 题目描述 提供一系列相关或相互依赖的对象的接口而无需指定这些对象所属的具体类当一个系统应该独立于它的产品创建、组合和表示时当要强调一系列相关的产品对象的设计以便进行联合使用时一个系统要由多个产品系列中的一个来配置时为图形用户界面GUI组件定义不同平台的并行类层次结构 使用场景 当需要创建的对象是已一系列相互关联或相互依赖的产品族时如电器工厂中的电视机、洗衣机、空调等系统中有多个产品族但每次只使用其中的某一族产品。如有人只喜欢穿某一个品牌的衣服和鞋系统中提供了产品的类库全且所有产品的接口相同客户端不依赖产品实例的创建细节和内部结构 如输入发换皮肤一整套一起换生成不同操作系统 程序 2.4 生成器模式建造者模式 意图 将一个复杂对象的构建与它的表示分离使得同样的构建过程可以创建不同的表示 主要角色 抽象建造者类这个接口规定要实现对象的那些部分的创建并不涉及具体部件对象的创建具体建造者类实现Builder接口完成复杂产品的各个部件的具体创建方法在构造过程完成后提供产品的实例产品类要创建的负责对象指挥者类调用具体建造者来创建复杂对象的各个部分在指导者中不涉及具体产品的信息只负责保证对象各部分完整创建或按某种顺序创建 比如 分离了部件的构造由Builder来负责和装配Director负责从而可以构造出负责的对象这个模式使用于某个对象的构建过程复杂的情况 由于实现了构建和装配的解耦不同的构建器相同的装配也可以做出不同的对象相同的构建器不同的装配顺序也可以做出不同的对象。也就是实现了构建算法、装配算法的解耦实现了更好的复用 建造者模式可以将部件和其组装过程分开一步一步创建一个复杂的对象用户只需要指定复杂对象的类型就可以得到该对象而无需知道其内部的具体构造细节 优点 封装性很好客户端不必知道产品内部组成的细节可以更加精细地控制产品的创建过程容易进行扩展 缺点 建造者模式所创建的产品一般具有较多的共同点其组成部分相似如果产品之间的差异性很大则不适合使用建造者模式因此其使用范围受到一定的限制 题目描述 当创建复杂对象的算法应该独立于该对象的组成部分及其装配方式时当构造过程必须允许被构造的对象有不同的表示时将一个复杂对象的构建与其表示分离使得同样的构建过程可以创建不同的表示适用于抽象复杂对象的构建步骤和基于构建过程的具体实现构建复杂对象的不同表示关键字复杂对象不同的表示 使用场景 建造者模式创建的是复杂对象其产品的各个部分经常面临着剧烈的变化但将它们组合在一起的算法却相对稳定所以它通常在以下场合使用 创建的对象较复杂由多个部件构成个部件面临着复杂的变化但构件间的建造顺序是稳定的产品的构建过程和最终表示是独立的 2.5 原型模式 意图 用原型实例指定创建对象的种类并且通过复制这些原型创建新的对象用一个已经创建的实例作为原型通过复制该原型对象来创建一个和原型对象相同的新对象 主要角色 抽象原型类规定了具体原型对象必须实现的clone()方法具体原型类实现抽象原型类的clone()方法它是可被复制的对象访问类使用具体原型类中的clone()方法来复制新的对象 比如 同一学校的”三好学生“奖状除了获奖人姓名不同其他相同可以使用原型模式复制多个”三好学生“奖状出来然后修改奖状上的名字即可 即由抽象原型类下的具体原型类重写父类接口中的clone由访问类复制对象 题目描述 应该类的实例只能有几个不同状态组合中的一种当一个系统应该独立于它的产品创建、构成和表示时当要实例化的类是在运行时刻指定是例如通过动态装载为了避免创建一个与产品类层次平行的工厂类层次时当一个类的实例只能有几个不同状态组合中的一种时建立相应数目的原型并克隆他们可能比每次用合适的状态手工实例化该类更方便些 使用场景 对象的创建非常复杂可以使用原型模式快捷的创建对象性能和安全要求比较高 2.6 单例模式选择题 意图 保证一个类仅有一个实例并提供一个访问它的全局访问点 题目描述 它能够保证一个类只产生唯一的一个实例 一个类仅有一个实例 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时 当这个唯一实例应该是通过之类化可扩展的并且客户无需更改代码就能使用一个扩展的实例时 2.7 创建型设计模式总结 创建型设计模式定义关键字工厂方法模式Factory Method定义一个用于创建对象的接口让子类决定实例化哪一个类。工厂方法模式使一个类的实例延迟到其子类子类决定实例化抽象工厂模式Abstract Factory提供一个创建一系列相关或相互依赖对象的接口且访问类无需指定它们具体的类抽象接口构建者模式生成器模式Builder将一个复杂对象的构建与它的表示分离使得同样的构建过程可以创建不同的表示类和构造分离原型模式Prototype用原型实例指定创建对象的种类并且通过复制这些原型创建新的对象原型实例拷贝单例模式Singleton保证一个类仅有一个实例并提供一个访问它的全局访问点唯一实例 3. 结构型设计模式 3.1 适配器模式 分为类和对象型类适配器模式使用继承类之间的耦合度比对象型高且要求程序员了解现有组件库中的相关组件的内部结构所以应用相对较少对象适配器模式使用聚合、组合 意图 将一个类的接口转换成客户希望的另外一个接口适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作 主要角色 目标接口当前系统业务所期待的接口它可以是抽象类或接口适配者类它是被访问和适配的现存组件库中的组件接口适配器类它是一个转换器通过继承或引用适配者的对象把适配者接口转换成目标接口让客户按目标接口的格式访问适配者 比如 类型定义一个适配器来实现当前系统的业务接口同时又继承现有组件库中已经存在的组件 对象型将现有组件库中已经实现的组件引入适配器类中该类同时实现当前系统的业务接口 现有一台电脑只能读SD卡。而要读取TF卡中的内容就需要使用适配器模式创建一个读卡器将TF卡中的内容读取出来 注类适配器模式违背了合成复用原则类适配器是客户类有一个接口规范的情况下可用反之不可用 题目描述 将一个对象加以包装以给客户提供其希望的另外一个接口想使用一个已经存在的类而其接口不符合要求使所有接口不兼容类可以一起工作将一个类的接口转换成客户希望的另一个接口创建一个可以复用的类该类可以与其他不相关的类或不可预见的两位协同工作想使用一个已经存在的子类但不可能对每一个都进行子类化以匹配他们的接口对象适配器可以适配它的父类接口 3.2 桥接模式 意图 将抽象部分与其实现部分分离使他们都可以独立地变化。它是用组合关系代替继承关系来事项从而降低了抽象和实现这两个可变维度的耦合度 主要角色 抽象化角色定义抽象类并包含一个对实现化对象的引用扩展抽象化角色是抽象化角色的子类实现父类中的业务方法并通过组合关系调用实现化角色中的业务方法并通过组合关系调用实现化角色中的业务方法实现化角色定义实现化角色的接口供扩展抽象化角色调用具体实现化角色给出实现化角色接口的具体实现 比如 开发一个跨平台视频播放器可以在不同操作系统平台Windows、Mac、Linux上播放多种格式的视频文件常见的视频格式包括RMVB、AVI、WMV等。该播放器包含了两个维度适合使用桥接模式。桥接模式提高了系统的可扩充性在两个维度都不需要修改原有系统。 如如果还有一种视频文件类型wmv我们只需要再定义一个类实现VideoFile接口即可 优点 提高了系统的可扩扩充性实现细节对客户透明 题目描述 类的抽象和其实现之间不希望有一个固定的绑定关系不希望在抽象和它的实现部分之间有一个固定的绑定关系都给另一个对象提供了一定程度上的间接性都涉及从自身以外的一个接口向这个对象转发请求类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充对一个抽象的实现部分的修改应对客户不产生影响即客户代码不必重新编译想对客户完全隐藏抽象的实现部分有许多类要生成的类层次结构想在多个对象间共享实现但同时要求客户并不知道这一点 使用场景 当一个类存在两个独立变化的维度且两个维度都需要进行扩展时当一个系统不希望使用继承或因为多层次继承导致系统类的个数急剧增加时当一个系统需要再构建的抽象化角色和具体化角色之间增加更加的灵活性时避免在两个层次之间建立静态的继承联系通过桥接模式可以使他们在抽象层建立一个关联关系 3.3 组合模式 意图 将对象组合成树形结构以表示“部分-整体”的层次结构组合模式使得用户对单个对象和组合对象的使用具有一致性 主要角色 抽象根节点定义系统各个层次对象的共有方法和属性可以预先定义一些默认行为和属性树枝节点定义树枝节点的行为存储子节点组合树枝节点和叶子节点形成一个树形结构叶子节点叶子节点对象其下再无分支是系统层次遍历的最小单位 比如 树形结构的文件夹系统 优点 组合模式可以清楚地定义分层次的复杂对象表示对象的全部或部分分层次它让客户忽略了层次的差异方便对整个层次结构进行控制客户端可以一致地使用一个组合结构或其中单个对象不必关心处理的是单个对象还是整个组合结构简化了客户端代码在组合模式中增加新的树枝节点和叶子节点都很方便无需对现有类库进行任何修改符合“开闭原则”组合模式为树形结构的面向对象实现提供了一种灵活的解决方案通过叶子节点和树枝节点的递归组合可以形成复杂的树形结构但对树形结构的控制却非常简单 题目描述 表示对象的部分-整体层次结构 组合模式正是应树形结构而生所以组合模式出现在树形结构的地方比如文件目录显示多级目录呈现等树形结构数据的操作 3.4 装饰器模式 意图 动态地给一个对象添加一些额外的职责就增加功能而言装饰器模式比生成子类更加灵活 指在不改变现有对象结构的情况下动态地给该对象增加一些职责即增加其额外功能的模式 主要角色 抽象构件角色定义一个抽象接口以规范准备接收附加责任的对象具体构件角色实现抽象构件通过装饰角色为其添加一些职责抽象装饰角色继承或实现抽象构件并包含具体构件的实例可以通过其子类扩展具体构件的功能具体装饰角色实现抽象装饰的相关方法并给具体构件对象添加附加的责任 题目描述 将一个对象加以包装以提供一些额外的行为在不影响其他对象的情况下以动态、透明的方式给单个对象添加职责动态地给一个对象添加一些额外的职责处理那些可以撤销的职责当不能采用生成子类的方式进行扩充时。一种情况是可能有大量独立地扩展为支持每一种组合将产生大量的子类使得子类数目呈爆炸性增长。另一种情况可能是由于类定义被隐藏或类定义不能用于生成子类。 3.5 外观模式 意图 为子系统中的一组接口提供一个一致的界面外观模式定义的一个高层接口这个接口是使得这一子系统更加任意使用 主要角色 外观角色为多个子系统对外提供一个共同的接口子系统角色实现系统的部分功能客户可以通过外观角色访问它 比如 智能家电控制 将打开灯、打开电视、打开空调、关灯、关电视、关空调等操作通过智能音箱语音控制 优点 降低了子系统与客户端之间的耦合度使得子系统的变化不会影响用它的客户类对客户屏蔽了子系统组件减少了客户处理的对象数目并使得子系统使用起来更加容易 缺点 不符合开闭原则修改麻烦 题目描述 将一系列对象加以包装以简化其接口需要为一个复杂子系统提供一个简单接口客户程序与抽象类的实现部分之间存在很大的依赖性引入外观模式将这个子系统与客户以及其他的子系统分离可以提高子系统的独立性和可移植性当需要构建一个层次结构的子系统时使用外观模式定义子系统中每层的入口点如果子系统之间是相互依赖的则可以让他们仅通过外观模式进行通信从而简化了他们之间的依赖性 使用场景 对分层结构系统构建时使用外观模式定义子系统中每层的入口点可以简化子系统之间的依赖关系 3.6 享元模式 意图 运用共享技术有效地支持大量细粒度的对象从而提高系统资源的利用率 享元模式中存在两种状态 内部状态不会随环境的改变而改变的可共享部分外部状态随环境改变而改变的不可以共享的部分 主要角色 抽象享元角色具体享元角色为每一个具体享元提供唯一的享元对象非享元角色享元工厂角色 比如 俄罗斯方块 有不同的颜色和形状不同颜色为外部状态 题目描述 因使用大量的对象而造成很大的存储开销时进行对象共享以减少对象数量从而达到较少的内存占用并提升性能一个应用程序使用了大量的对象完全由于使用大量的对象造成很的的存储开销对象的大对数状态都可变成为外部状态如果删除对象的外部状态那么可以用相对较少的共享对象取代很多组对象 3.7 代理模式 意图 为其他对象提供一种代理以控制对这个对象的访问 由于某些原因需要给某对象提供一个代理以控制对该对象的访问这时访问对象不适合或者不能直接引用目标对象代理对象作为访问对象和目标对象之间的中介 主要角色 抽象主题类通过接口或则抽象类声明真实主题和代理对象实现的业务方法真实主题类实现了抽象主题中的具体业务是代理对象所代表的真实对象是最终要引用的对象代理类提供了与真实主题相同的接口其内部含有对真实主题的引用它可以访问、控制、或扩展真实主题的功能 比如 火车站买票 如果要买火车票的话需要去火车站买票坐车到火车站排队等一系列的操作显然比较麻烦而火车站在多个地方都有售票点我们去代售点买票就方便很多 优点 代理模式在客户端和目标对象之间起到一个中介作用和保护目标对象的作用代理对象可以扩展目标对象的功能代理模式能将客户端与目标对象分离在一定程度上降低了系统的耦合度 缺点 增加了系统的复杂度 题目描述 将一个对象加以包装以控制对这个兑现的访问 在需要比较通用和复杂的对象指针代替简单的指针时 远程代理为一个对象在不同地址空间提供局部代表 将网络通信部分隐藏起来只暴露给本地服务一个接口通过该接口即可访问远程服务提供的功能而不必过多关心通信部分的细节 虚代理根据需要创建开销很大的对象 保护代理控制对原始对象的访问用于对象应该有不同的访问权限的时候 可以给不同的用户提供不同级别的使用权限 智能引用取代了简单指针它在访问对象时执行一些附加操作 为其他对象提供一个代理以控制对这个对象的访问 防火墙代理当你将浏览器配置成使用代理模式时防火墙就将你的浏览器的请求转给互联网当互联网返回响应时代理服务器再把他转给你的浏览器 3.8 结构型设计模式总结 结构定义关键字适配器模式Adapter将一个类的接口转换成客户希望的另外一个接口使得原本不相容的接口得以协同工作转换兼容接口桥接模式Bridge将抽象部分与其实现部分分离使他们都可以独立地变化抽象和实现分离组合模式Composite将对象组合成树形结构以表示“部分-整体”的层次结构组合模式使得用户对单个对象和组合对象的使用具有一致性整体-部分树形结构装饰器模式Decorator动态地给一个对象添加一些额外的职责就增加功能而言装饰器模式比生成子类更加灵活附加职责外观模式Facade为子系统中的一组接口提供一个一致的界面外观模式定义的一个高层接口这个接口是使得这一子系统更加任意使用对外同一接口享元模式Flyweight运用共享技术有效地支持大量细粒度的对象细粒度共享代理模式Proxy为其他对象提供一种代理以控制对这个对象的访问代理控制 4. 行为型设计模式 4.1 责任链模式 意图 使多个对象都有机会处理请求从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链并沿着这条链传递该请求直到有一个对象处理它为止 主要角色 抽象处理者角色定义一个处理请求的接口包含抽象处理方法和一个后继连接具体处理者角色实现抽象处理者的处理方法判断能否处理本次请求如果可以处理请求则处理否则将该请求转给它的后继者客户类角色创建处理链并向链头的具体处理者对象提交请求它不关心处理细节和请求的传递过程 比如 学生请假不同的批假天数找不同的上级领导 优点 降低了对象之间的耦合度增强了系统的可扩展性可以增加请求处理类满足开闭原则增强了给对象指派职责的灵活性当工作流程发生变化可以动态地改变链内的成员或者修改他们的次序也可动态地新增或者删除责任责任链简化了对象之间的连接责任分担每个类只需要处理自己该处理的工作不能处理的传递给下一个对象完成 缺点 不能保证每个请求一定被处理对比较长的责任链请求的处理可能涉及多个处理对象系统性能将受到一定影响责任链建立的合理性要靠客户端来保证增加了客户端的复杂性可能会由于责任链的错误设置而导致系统出错 题目描述 有多个对象可以处理一个请求在运行时刻自动确定哪个对象处理一个客户需要使用一组相关对象想在不明确指定接受者的情况下想多个对象中的一个提交一个请求可处理一个请求的对象集合应被动态指定 4.2 命令模式 意图 将一个请求封装为一个对象从而使得可以用不同的请求对客户进行参数化对请求排队或记录请求日志以及支持可撤销的操作 将一个请求封装为一个对象是发出请求的责任和执行请求的责任分割开这样两者之间通过命令对象进行沟通这样方便将命令对象进行存储、传递、调用、增加和管理。 主要角色 抽象命令类角色定义命令接口声明执行的方法具体命令角色具体的命令实现命令的接口通常会持有接收者并调用接收者的功能来完成命令要执行的操作实现者/接收者角色接收者真正执行命令的对象。任何类都可能成为一个接收者只要它能够实现命令要求实现的相应功能调用者/请求者角色要求命令执行相应操作的地方也就是说相当于使用命令对象的入口 比如 吃饭点餐顾客包订单交给服务员服务员把订单放在订单柜说“订单来了”厨师根据订单准备餐点 服务员调用者角色由他发起命令 厨师接收者角色真正命令执行的对象 订单命令中包含订单 优点 降低系统的耦合度增加或删除命令非常方便可以实现宏命令 缺点 可能会导致某些系统有过多的具体命令类系统结构更加复杂 题目描述 抽象出执行的动作以参数化某对象将请求封装为对象从而可以使用不同的请求对客户进行参数化在不同的时刻指定、排列和执行请求支持修改日志这样当系统崩溃时这些修改可以被重做一遍 使用场景 需要将请求调用者和请求接收者解耦使得调用者和接收者不直接交互系统需要支持命令的撤销undo操作和恢复redo操作系统需要再不同的时间指定请求、将请求排队和执行请求 4.3 解释器模式没怎么考 意图 给定一个语言定义他的文法的一种表示并定义一个解释器这个解释器使用该表示来解释语言中的句子 比如 加减法运算规则为由数值和±符号组成的合法序列 题目描述 有一个语言需要解释执行并且可将句子表示为一个抽象语法树当有一个语言需要解释执行并且可将该语言中的句子表示为一个抽象语法树时 4.4 迭代器模式 意图 提供一种方法顺序访问一个聚合对象中的各个元素且不需要暴露该对象的内部表示 主要角色 抽象聚合角色定义存储、添加、删除聚合元素以及创建迭代器对象的接口具体聚合角色实现抽象聚合类返回一个具体迭代器的实例抽象迭代器角色定义访问和遍历聚合元素的接口通常包含hasNext()、next()等方法具体迭代器角色实现抽象迭代器接口中定义的方法完成聚合对象的遍历记录遍历的当前位置 题目描述 访问一个聚合对象的内容而无需暴露它的内部细节的表示支持对聚合对象的多种遍历为遍历不同的聚合结构提供一个统一的接口 4.5 中介者模式 意图 用一个中介对象来封装一系列的对象交互中介者使各个对象不需要显式的互相引用从而使其耦合松散而且可以独立地改变他们之间的交互 比如 同事类之间的关系比较复杂是一个网状结构而引入中介者模式那么同事类之间的关系将变为星型结构 主要角色 抽象中介角色它是中介者的接口提供了同事对象注册与转发同事对象信息的抽象方法具体中介者角色实现中介者接口定义一个List来管理同事对象协调各个同事角色之间的交互关系因此它依赖于同事角色抽象同事类角色定义同事类的接口保存中介者对象提供同事对象交互的抽象方法实现所有相互影响的同事类的公共功能具体同事类角色是抽象同事类的实现者当需要与其他同事对象交互时由中介者对象负责后续的交互 比如 房屋中介房主将房屋托管给房屋中介而租房者从房屋中介获取房屋信息 优点 松散耦合集中控制交互一对多关联变成一对一关联 缺点 当同事类太多时中介者的职责将很大它会变复杂而庞大以至于系统难以维护 题目描述 一个对象引用其他很多对象并且直接与这些对象通信导致难以复用该对象一组对象以定义良好但是复杂的方式进行通信产生的相互依赖关系结构混乱且难以理解减少多个对象或类之间的通信复杂性中介模式和观察者模式是相互竞争的模式差别前者的中介对象封装了其他对象间的通信而后者通过引入其他对象来分布通信欲使一个后端数据模型能够被多个前端用户界面连接 4.6 备忘录模式 意图 在不破坏封装性的前提下捕获一个对象的内部状态并在对象之外保存这个状态。这样以后就可以将对象恢复到原先保存的状态 优点 提供了一种可以恢复状态的机制当用户需要时能够比较方便地将数据恢复到某个历史的状态实现了内部状态的封装除了创建它的发起人之外其他对象都不能访问这些状态信息简化了发起人类发起人不需要管理和保存其内部状态的各个备份所有状态信息都保存在备忘录中并由管理者进行管理这符合单一职责原则 缺点 资源消耗大如果要保存的内部状态信息过多或者特别频繁将会占用较大的内存资源 题目描述 将对象的状态恢复到先前的状态在不破坏封装性的前提下捕获对象的内部状态并在对象之外保存必须保存一个对象在某一个时刻的部分状态如果一个用接口来让其他对象之间得到这些状态将会暴露对象的实现细节并破坏对象的封装性 4.7 观察者模式 意图 定义对象间的一种一对多的依赖关系当一个对象的状态发生改变时所有依赖于它的对象都得到通知并被自动更新 比如 使用微信公众号公众号有内容更新的话会推送给关注公众号的微信用户端 题目描述 当一个对象必须通知其他对象而它又不能假定其他对象时谁时在发布-订阅消息模型中订阅者订阅一个主题后当该主题有新消息到达时所要订阅者都会受到通知使所要交互的对象尽量松耦合当一个对象的改变需要改变其它对象 4.8 状态模式 意图 允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类 对有状态的对象把复杂的“判断逻辑”提取到不同的状态对象中允许状态对象在其内部状态发生改变时改变其行为 比如 通过按钮控制一个电梯的状态有开门状态关门状态停止状态运行状态。每一种状态改变都有可能要根据其他状态来更新处理 比如如果电梯处于运行状态就不能进行开们操作而电梯是停止状态就可以执行开门操作 题目描述 一个对象的行为决定于它的状态并且它必须在运行时刻根据状态改变它的行为一个对象在其内部状态改变时改变其行为一个对象的行为决定于它的状态并且它必须在运行时刻根据状态改变它的行为一个操作中含有庞大的多分支的条件语句且这些分支依赖于该对象的状态 4.9 策略模式 意图 定义一系列的算法把他们一个个封装起来并且使他们可以相互替换。此模式使得算法可以独立于使用他们的客户而变化 比如 我们要去旅游选择出行方式可以选择骑自行车坐汽车坐火车坐飞机 优点 策略模式之间可以自由切换由于策略类都实现同一个接口所以使他们之间可以自由切换易于扩展增加一个新的策略只需要添加一个具体的策略类基本不需要改变原有的代码符合“开闭原则”避免使用多重条件选择语句充分体现面向对象设计思想 缺点 客户端必须知道所有的策略类并且自行决定使用哪一个策略类策略模式将造成产生很多策略类 题目描述 需要使用一个算法的不同变体许多相关的类仅仅是行为有异在设计某购物中心的收银软件系统时要求能够支持在不同时期推出打折返利满减等不同促销活动一个类定义了多种行为并且这些行为在这个类的操作以多个条件语句的形式出现 4.10 访问者模式 意图 封装一些作用于某对象结构中的各元素的操作。它允许在不改变各元素的类的前提下定义作用于这些元素的新操作 比如 有很多宠物狗、猫等要给宠物喂食的话主人可以喂食其他人也可以喂食 题目描述 一个对象结构包含很多类对象它们有不同的接口而用户想对这些对象实施一些依赖于其具体类的操作需要对一个对象结构中的对象进行很多不同的并且不相关的操作而又想避免这些操作“污染”这些对象的类定义对象结构的类很少改变但经常需要在此结构上定义新的操作 4.11 模版方法模式下午题不考 意图 定义一个操作中的算法骨架而将一些步骤延迟到子类中模版方法模式使得子类可以不改变一个算法结构即可重定义该算法的某些特定步骤 题目描述 一次性实现一个算法的不变部分并将可变的行为留给子类来实现各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复控制子类扩展 4.12 行为性设计模式总结 行为型设计模式定义关键字职责链模式Chain of Responsibility(责任链模式)使多个对象都有机会处理请求从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链并沿着这条链传递该请求直到有一个对象处理它为止传递请求职责链接命令模式Command将一个请求封装为一个对象从而使得可以用不同的请求对客户进行参数化对请求排队或记录请求日志以及支持可撤销的操作参数化日志记录解释器模式Interpreter给定一个语言定义他的文法的一种表示并定义一个解释器这个解释器使用该表示来解释语言中的句子文法解释迭代器模式Iterator提供一种方法顺序访问一个聚合对象中的各个元素且不需要暴露该对象的内部表示顺序访问中介者模式Mediator用一个中介对象来封装一系列的对象交互中介者使各个对象不需要显式的互相引用从而使其耦合松散而且可以独立地改变他们之间的交互不直接引用备忘录模式Memento在不破坏封装性的前提下捕获一个对象的内部状态并在对象之外保存这个状态。这样以后就可以将对象恢复到原先保存的状态保存恢复观察者模式Observer定义对象间的一种一对多的依赖关系当一个对象的状态发生改变时所有依赖于它的对象都得到通知并被自动更新通知自动更新状态模式State允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类状态变成类策略模式Strategy定义一系列的算法把他们一个个封装起来并且使他们可以相互替换。此模式使得算法可以独立于使用他们的客户而变化算法替换模版方法模式Template Method定义一个操作中的算法骨架而将一些步骤延迟到子类中模版方法模式使得子类可以不改变一个算法结构即可重定义该算法的某些特定步骤访问者模式Visitor封装一些作用于某对象结构中的各元素的操作。它允许在不改变各元素的类的前提下定义作用于这些元素的新操作新操作
http://www.ho-use.cn/article/10822264.html

相关文章:

  • 网站建设全部流程包括备案大兴安岭建设局网站
  • 做外贸网站有什么用网站建设客户合同范本
  • 扁平化设计风格网站离婚在线律师
  • 站长之家seo查询谷歌搜索引擎入口
  • 摄影作品网站推荐国内最炫酷的网站
  • 企业网站空间多大合适wordpress is
  • 建设网站要先给钱才能做网站搭建文案
  • 网站服务器 免费wordpress渗透
  • 灰色网站设计网络推广引流软件
  • 怎么快速开发一个网站有关网络技术的网站
  • 动易论坛官方网站福建省建设工程质量安全网站
  • 罗湖商城网站建设找哪家公司比较安全旅游网站项目策划书
  • 做网站设计的公司排名房屋装修设计图片欣赏
  • 网站建设交接表wordpress主题 免费 自媒体
  • 天台城乡规划建设局网站seo网站的优化流程
  • 怎么做淘宝客网站和APP软文之家
  • 犀牛云做网站怎么这么贵wordpress如何导出数据
  • 怎么破解网站后台做网站应达到什么效果
  • 商务网站需求说明书网页设计与制作课程评价
  • 陕西恒立建设集团网站自助建站平台免费
  • 网站引量方法只做百度移动端网站可以吗
  • 建设网站500错误建设工程信息网站
  • 个人网站二级域名做淘宝客网站建设流程的过程
  • 为什么建设网站asp评价网站开发文档
  • 企业网站用个人备案微信公众平台怎么做微网站吗
  • 网站 建设实验小结小程序自己制作流程
  • 公司网站制作投标厦门比较有名的设计公司
  • 网站是怎么做专业做俄语网站建设
  • 网站管理后台源码刚做的网站上线后收不到了
  • 陶瓷网站建设网页设计网站建设过程报告