原型设计模式

通过本篇的学习,您将掌握:

1、什么是原型模式

2、原型模式的使用场景

3、原型模式的封装

4、如何使用封装的原型模式


前言:

原型模式是一个创建型的模式。原型二字表明了该模式应该有个样本实例,用户从这个样板对象中复制一个内部属性一致的对象,这个过程称为克隆。被复制的对象称为原型。这个原型是可定制的。原型模式多用于创建复杂的或者构建耗时的实例,因为这种情况下,复制一个已经存在的实例可供程序高效运行。


一、什么是原型模式

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

二、原型模式的使用场景

1、类初始化需要消化非常多的资源,这些资源包括数据、硬件资源等,通过原型拷贝避免这些消耗。

2、通过new一个对象需要非常繁琐的数据准备或者访问权限,这时可以使用原型对象。

三、原型模式的封装

原型模式主要由三大块组成:

1、Client:客户端用户

2、Prototype:抽象类或者接口,声明具备clone能力

3、ConcretePrototype:具体的原型类

下面我们通过一个demo的具体代码来体现原型模式在项目中的具体使用:

1、ConcretePrototype以及Prototype

/**
 *  WordDocument:ConcretePrototype具体的原型类
 *  Cloneable :Prototype接口,具备clone能力
 */
public class WordDocument implements Cloneable {

   private String mText;//文本
    private List<String> mImages = new ArrayList<String>();//图片列表

    public WordDocument(){
        System.out.println("worddocument构造函数");
    }
    @Override
    public WordDocument clone() {
        WordDocument doc= null;
        try {
            doc = (WordDocument) super.clone();
            doc.mText = this.mText;
            doc.mImages  = this.mImages;
            return doc;
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return null;

    }

    public String getmText() {
        return mText;
    }

    public void setmText(String mText) {
        this.mText = mText;
    }

    public List<String> getmImages() {
        return mImages;
    }

    public void addImages(String mImage) {
       this.mImages.add(mImage);
    }
   //文档打印内容
    public void showDocument(){
        System.out.println("--------Word-Start-------");
        System.out.println("mText:"+mText);
        System.out.println("mImage:"+mImages);
        for (String imgName:mImages)
        {
            System.out.println("imgNmae:"+imgName);
        };
        System.out.println("--------Word-End-------");
    }
}

2、客户端(即调用封装的原型模式代码):

 WordDocument orgin =new WordDocument();
        orgin.setmText("第一篇文档");
        orgin.addImages("第一张图片");
        orgin.addImages("第二张图片");
        orgin.showDocument();
        WordDocument copy = orgin.clone();
        copy.setmText("这时修改后的第二篇文档");
        copy.addImages("Lucky.jpg");
        copy.showDocument();
        orgin.showDocument();



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值