[设计模式笔记]一. 创建型模式--5.Prototype模式(原型)(二)

场景


假设飞机由自我复制的能力生产飞机时先生成一部原型机因为生产原型机需要对原型机的各种参数进行调试调试出飞机的最好的参数这些参数确定后就可以进行批量生产批量生产就相当于飞机的Clone如果生产每一台飞机都像生产原型机那样那效率是很低下的.


角色


Client 使用者负责飞机部件的生产流程调用CPlanBuilder提供的接口.

CPlanePrototype提供Clone接口.

CHelicopterCBattlePlane能自我复制的飞机.



[设计模式笔记]一. 创建型模式--5.Prototype模式(原型)(二)_第1张图片

图1


使用


// 伪代码

// 生产原型机

CHelicopter* pCHelicopter = new CHelicopter;

pCHelicopter->Init();

CPlanePrototype* pCPlanePrototype = pCHelicopter;

// Client

CPlanePrototype* p = pCPlanePrototype->Clone();

// 需要多少, Clone多少.


我的理解


1. 生产原型机的过程你可以使用Abstractr Factory模式, Builder模式等(如果是一些复杂对象的话). 用户需要某对象时, Clone就可以了.

2. pCPlanePrototype这个对象需要正确的管理好这就是原型.

3. 某些对象的状态很复杂而且经常变化时, Clone很好用因为对象自己最熟悉自己的状态把各种状态的赋值封装在Clone非常符合"高内聚低耦合"原则.


你可能感兴趣的:(设计模式,prototype,创建型模式)