C++设计模式
文章平均质量分 51
P1ay_
一个想做独立游戏人的大三咸鱼。
展开
-
中介者模式Mediator(c++设计模式)
面试官:请你谈谈中介者模式模式优点模式缺点适用环境中介者模式代码定义一个对象来封装一系列对象的交互。中介者模式使各对象之间不需要显式地相互引用,从而使其耦合松散,而且让你可以独立地改变它们之间的交互。模式优点简化了对象之间的交互,它用中介者和同事的一对多交互代替了原来同事之间的多对多交互,将原本难以理解的网状结构转换成相对简单的星型结构可将各同事对象解耦可以减少子类生成,中介者模式将原本分布于多个对象间的行为集中在一起,改变这些行为只需生成新的中介者子类即可,这使得各个同事类可被重用,无须直接对原创 2021-01-28 19:13:29 · 225 阅读 · 0 评论 -
观察者模式Observer(c++设计模式)
面试官:请你谈谈观察者模式模式优点模式缺点适用环境观察者模式代码定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象都得到通知并被自动更新。模式优点可以实现表示层和数据逻辑层的分离在观察目标和观察者之间建立一个抽象的耦合支持广播通信,简化了一对多系统设计的难度符合开闭原则,增加新的具体观察者无须修改原有系统代码,在具体观察者与观察目标之间不存在关联关系的情况下,增加新的观察目标也很方便模式缺点将所有的观察者都通知到会花费很多时间如果存在循环依赖时可能导致系原创 2021-01-28 19:08:28 · 155 阅读 · 0 评论 -
代理模式Proxy(c++设计模式)
面试官:请你谈谈代理模式模式优点模式缺点适用环境代理模式代码给某一个对象提供一个代理或占位符,并由代理对象来控制对原对象的访问。模式优点能够协调调用者和被调用者,在一定程度上降低了系统的耦合度客户端可以针对抽象主题角色进行编程,增加和更换代理类无须修改源代码,符合开闭原则,系统具有较好的灵活性和可扩展性模式缺点由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢(例如保护代理)实现代理模式需要额外的工作,而且有些代理模式的实现过程较为复杂(例如远程原创 2021-01-28 19:04:03 · 195 阅读 · 0 评论 -
外观模式Facade(c++设计模式)
面试官:请你谈谈外观模式模式优点模式缺点适用环境外观模式代码为子系统中的一组接口提供一个统一的入口。外观模式定义了一个高层接口,这个接口使得子系统更加容易使用。模式优点对客户端屏蔽了子系统组件,减少了客户端所需处理的对象数目,并使得子系统使用起来更加容易实现了子系统与客户端之间的松耦合关系,这使得子系统的变化不会影响到调用它的客户端,只需要调整外观类即可子系统的内部变化不会影响到外观对象,一个子系统的修改对其他子系统也没有任何影响模式缺点不能很好地限制客户端直接使用子系统类,如果对客户端原创 2021-01-28 18:58:11 · 154 阅读 · 0 评论 -
装饰模式Decorator(c++设计模式)
面试官:请你谈谈装饰模式模式优点模式缺点适用环境装饰模式代码动态的给一个对象增加一些额外的职责。就扩展功能而言,装饰模式提供了一种比使用子类更加灵活的替代方案。模式优点对于扩展一个对象的功能,装饰模式比继承更加灵活,不会导致类的个数急剧增加可以通过一种动态的方式来扩展一个对象的功能,通过配置文件可以在运行时选择不同的具体装饰类,从而实现不同的行为可以对一个对象进行多次装饰具体构件类与具体装饰类可以独立变化,用户可以根据需要增加新的具体构件类和具体装饰类,且原有类库代码无须改变,符合开闭原则原创 2021-01-28 16:46:36 · 148 阅读 · 0 评论 -
组合模式Composite(c++设计模式)
面试官:请你谈谈组合模式模式优点模式缺点适用环境组合模式代码组合多个对象形成树形结构以表示具有部分-整体关系的层次结构。组合模式让客户端可以统一对待单个对象和组合对象。模式优点可以清楚地定义分层次的复杂对象,表示对象的全部或部分层次,让客户端忽略了层次的差异,方便对整个层次结构进行控制客户端可以一致地使用一个组合结构或其中单个对象,不必关心处理的是单个对象还是整个组合结构,简化了客户端代码增加新的容器构件和叶子构件都很方便,符合开闭原则为树形结构的面向对象实现提供了一种灵活的解决方案模式缺原创 2021-01-27 19:27:11 · 208 阅读 · 0 评论 -
桥接模式Bridge(c++设计模式)
面试官:请你谈谈桥接模式模式优点模式缺点适用环境桥接模式代码将抽象部分与它的实现部分解耦,使得两者能够独立变化。模式优点分离抽象接口及其实现部分可以取代多层继承方案,极大地减少了子类的个数提高了系统的可扩展性,在两个变化维度中任意扩展一个维度,不需要修改原有系统,符合开闭原则模式缺点会增加系统的理解与设计难度正确识别出系统中的两个独立变化的维度并不是一件容易的事情适用环境需要在抽象化和具体化之间增加更多的灵活性,避免在两个层次之间建立静态的继承关系抽象部分和实现部分可以以继承原创 2021-01-20 16:32:11 · 123 阅读 · 0 评论 -
适配器模式Adapter(c++设计模式)
面试官:请你谈谈适配器模式模式优点模式缺点适用环境适配器模式代码类适配器对象适配器将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作模式优点将目标类和适配者类解耦增加了类的透明性和复用性灵活性和扩展性非常好模式缺点类适配器一次只能适配一个适配者,且适配者不能为最终类,目标抽象类只能为接口,不能为类对象适配器在适配器中置换适配者类的方法比较麻烦适用环境系统需要使用现有的类(适配者),而这些类的接口不符合系统的需要,甚至没有这些类的源代码创建一个可原创 2021-01-20 16:23:59 · 99 阅读 · 0 评论 -
单例模式Singleton(c++设计模式)
面试官:请你谈谈单例模式模式优点模式缺点适用环境单例模式代码对于一个软件系统中的某些类而言,只有一个示例很重要,例如一个操作系统中就只能打开一个任务管理器窗口,如果不适用机制对窗口对象进行唯一化,将会产生各种不必要的麻烦,因此有了单例模式,单例类拥有一个私有构造函数,确保用户无法通过new关键字直接实例化它模式优点提供了对唯一实例的受控访问可以节约系统资源允许可变数目的实例(多例类)模式缺点扩展困难单例类的职责过重适用环境系统只需要一个实例对象,或因为资源消耗太大而只允许创建一原创 2020-12-25 15:46:53 · 165 阅读 · 0 评论 -
原型模式Prototype(c++设计模式)
面试官:请你谈谈原型模式模式优点模式缺点适用环境原型模式代码原型模式使用原型示例指定待创建对象的类型,并且通过复制这个原型来创建新的对象模式优点简化对象的创建过程扩展性好提供了简单的创建结构可以用深克隆的方式保存对象的状态模式缺点需要为每一个类配备一个克隆方法,而且该方法位于一个类的内部,当对已有的类进行改造时,需要修改源代码,违背开闭原则在实现深克隆时需要编写较为复杂的代码适用环境创建新对象陈本较大系统要保存对象状态,而对象的状态变化很小需要避免使用分层次的工厂类来创建原创 2020-12-25 15:02:09 · 125 阅读 · 0 评论 -
建造者模式Builder(c++设计模式)
面试官:请你谈谈建造者模式模式优点模式缺点适用环境建造者模式代码建造者模式就是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示,客户端无须知道复杂对象的内部组成部分与装配方式,只需要知道所需建造者的类型即可模式优点客户端不必知道产品内部组成细节,将产品本身与创建过程解耦,使相同的创建国产可以创建不同的产品对象对于替换和增加新的具体建造者符合开闭原则可以精细地控制产品创建过程特点:高内聚低耦合模式缺点产品之间的差异性很大不适合用建造者模式产品内部变化复杂的话会需原创 2020-12-24 23:48:30 · 109 阅读 · 0 评论 -
抽象工厂模式AbstractFactory(c++设计模式)
面试官:请你谈谈抽象工厂模式从 简单工厂模式 说起,简单工厂模式通过设置工厂来模板化了大部分重复的创建产品代码,工厂通过参数来创建不同的产品。由于这些参数得事先定义好,也就是说这工厂只能生产某些产品,如果我希望添加或者删除产品,需要对工厂进行修改,违背了 开闭原则,从而引入了 工厂方法模式 ,通过添加抽象工厂,每个工厂负责一种产品的创建,但这样工厂类会特别多,增加了系统开销。所以就有了抽象工厂模式,抽象工厂模式里每个工厂负责一个产品族的创建,也就是引入了抽象产品跟抽象工厂的结合。抽象工厂模式的开原创 2020-12-24 21:34:23 · 115 阅读 · 0 评论