zoukankan      html  css  js  c++  java
  • 设计模式之七:Prototype(转)

    一、功能 

      用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 



      二、结构图

      三、优缺点

      优点:复制自身。客户不知道需要对象的实际类型,只需知道它的抽象基类即可。(即有继承树的情况) 

      缺点:必须先有一个对象实例(即原型)才能clone。

      四、示例代码

    class Prototype //抽象基类
    {
    public:
        virtual Prototype* Clone() = 0 ;
    } ;
    
    class ConcretePrototype1 : public Prototype
    {
    public:
        virtual Prototype* Clone()
        {
            ConcretePrototype1 *p = new ConcretePrototype1() ;
            *p = *this ; //复制对象
            return p ;
        }
    } ;
    
    class ConcretePrototype2 : public Prototype
    {
    public:
        virtual Prototype* Clone()
        {
            ConcretePrototype2 *p = new ConcretePrototype2() ;
            *p = *this ; //复制对象
            return p ;
        }
    } ;
    
    客户端代码:
    ConcretePrototype1 *obj1 = new ConcretePrototype1() ;//原型对象1
    ConcretePrototype2 *obj2 = new ConcretePrototype2() ;//原型对象2
    
    Prototype *newobj1 = obj1->Clone() ;//克隆对象1
    Prototype *newobj2 = obj2->Clone() ;//克隆对象2
    
    // 使用复制出的对象newobj1和newobj2
    View Code

    五、实例

         在一个图形编辑器中,每一个图形元素,如线、圆、文字等都应该支持拷贝操作,即点中图形,按下Ctrl+C,再按下Ctrl+V后就会复制一个新的图形。显然这是一种clone操作。所以在每个从Graphic派生出的图形子类都应运用Prototype模式,加上Clone操作。

  • 相关阅读:
    SQL SERVER的检查点checkpoint
    MySQL备份说明
    声明对象和创建对象的区别
    getParameter的用法总结
    Jsp的九大对象,七大动作,三大指令
    为什么内部类访问的外部变量需要使用final修饰
    java synchronized详解
    网上选课系统需求说明书
    第三次作业
    第二次作业
  • 原文地址:https://www.cnblogs.com/wangzhijun/p/3466765.html
Copyright © 2011-2022 走看看