您的位置:首页 > 编程语言 > C语言/C++

C++知识总结(12)

2017-08-10 16:45 155 查看
51 建造者模式和工厂模式的区别?      

工厂模式一般都是创建一个产品,注重的是把这个产品创建出来就行,只要创建出来,不关心这个产品的组成部分。从代码上看,工厂模式就是一个方法,用这个方法就能生产出产品。

             建造者模式也是创建一个产品,但是不仅要把这个产品创建出来,还要关系这个产品的组成细节和组成过程。从代码上看,建造者模式在建造产品时,这个产品有很多方法,建造者模式会根据这些相同方法但是不同执行顺序建造出不同组成细节的产品。

            可以比较两个模式的example代码,一比较就会比较出来,工厂模式关心整体,建造者模式关心细节。

52 原型模式的使用范围?

1:创建新对象成本较大(例如初始化时间长,占用CPU多或占太多网络资源),新对象可以通过复制已有对象来获得,如果相似对象,则可以对其成员变量稍作修改。

2:系统要保存对象的状态,而对象的状态很小。

3:需要避免使用分层次的工厂类来创建分层次的对象,并且类的实例对象只有一个或很少的组合状态,通过复制原型对象得到新实例可以比使用构造函数创建一个新实例更加方便

53 代理模式的使用范围?

1、 远程代理:为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。
2、 虚拟代理:通过使用过一个小的对象代理一个大对象。这样就可以减少系统的开销。
3、 保护代理:用来控制对真实对象的访问权限。
54 装饰模式的使用范围?

动态、透明地给特定对象添加职责,也就是说,不会影响到其他对象。用于那些可以随时撤销的职责。当用子类进行扩展是不切实际的时候。有时需要大量的独立扩展并将导致支持各种组合的子类数量大爆炸 (比如小白的例子)。或者一个类的定义可能是隐藏的是子类无法获取到的。

55 适配器模式的使用范围

类适配器与对象适配器的使用场景一致,仅仅是实现手段稍有区别,二者主要用于如下场景:

  (1)想要使用一个已经存在的类,但是它却不符合现有的接口规范,导致无法直接去访问,这时创建一个适配器就能间接去访问这个类中的方法。

  (2)我们有一个类,想将其设计为可重用的类(可被多处访问),我们可以创建适配器来将这个类来适配其他没有提供合适接口的类。

  以上两个场景其实就是从两个角度来描述一类问题,那就是要访问的方法不在合适的接口里,一个从接口出发(被访问),一个从访问出发(主动访问)。

接口适配器使用场景:

(1)想要使用接口中的某个或某些方法,但是接口中有太多方法,我们要使用时必须实现接口并实现其中的所有方法,可以使用抽象类来实现接口,并不对方法进行实现(仅置空),然后我们再继承这个抽象类来通过重写想用的方法的方式来实现。这个抽象类就是适配器。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: