设计模式:原型模式

本文介绍了原型模式,一种创建型设计模式,用于通过复制已有对象来创建新对象。原型模式涉及客户角色、抽象原型和具体原型三个角色,并在Java中主要通过实现`clone`方法来实现。文章通过举例说明如何在无法获得真实对象时,创建其仿制品以供使用。
摘要由CSDN通过智能技术生成

原文地址:http://leihuang.org/2014/12/03/prototype/

Creational 模式

物件的产生需要消耗系统资源,所以如何有效率的产生、管理 与操作物件,一直都是值得讨论的课题, Creational 模式即与物件的建立相关,在这个分类下的模式给出了一些指导原则及设计的方向。下面列举到的全属于Creational 模式


您从图书馆的期刊从发现了几篇您感兴趣的文章,由于这是图书馆的书,您不可以直接在书中作记号或写字,所以您将当中您所感兴趣的几个主题影印出来,这下子您就可在影印的文章上画记重点。

上面这段情景就是利用了今天要讲的原型设计模式(prototype).

原型模式(prototype)它是指通过给定一个原型对象来指明所要创建的对象类型,然后复制这个原型对象的办法创建出同类型的对象。原型模式也属于创建模式。

img

原型模型涉及到三个角色:

  • 客户角色(client):客户端提出创建对象的请求;
  • 抽象原型(prototype):这个往往由接口或者抽象类来担任,给出具体原型类的接口;
  • 具体原型(Concrete prototype):实现抽象原型,是被复制的对象;

下面我们就来实现一个原型模式,比如呢,我们用不起mac(Mac接口),怎么办呢,我们仿造一个假的mac(ImitatedMac)出来吗.然后我们程序员(Coder)依然可以使用它.

Mac 接口

public interface Mac extends Cloneable{
    public void play() ;
    public Object clone() ;
}

ImitatedMac 实现Mac接口 --假的Mac

public class ImitatedMac implements Mac {
    @Override
    public Object clone() {
        try {
            return super.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
            return null ;
        }
    }

    @Override
    public void play() {
        System.out.println("哈哈,我是假的!");
    }
}

Coder 类 --程序员

public class Coder {
    public static void main(String[] args) {
        Mac mac = (Mac) new ImitatedMac().clone() ;
        mac.play();
    }
}

其实原型模型在java中的使用主要用到了clone方法,大家可以仔细阅读一下这篇博客,有助于理解原型设计模式.


2014-12-04 00:59:12

Brave,Happy,Thanksgiving !

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值