创建型模式——2原型模式

声明:设计模式系列笔记摘自http://c.biancheng.net/view/1317.html

1、定义:用一个已经创建好的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象

2、原型模式包括以下主要角色:
a.抽象原型类:规定了具体原型类必须实现的接口。
b.具体原型类:实现了抽象原型类的clone()方法,它是可被复制的对象。
c.访问类:使用了具体原型类中的clone()方法复制新对象。


image.png

3.具体原型类例子:

class Realizetype implements Cloneable{
    Realizetype(){
        System.out.println("具体原型创建成功");
    }
    
    public Object clone() throws CloneNotSupportedException{
        System.out.println("具体原型复制成功");
        return (Realizetype)super.clone();
    }
}

public class PrototypeTest {
    public static void main(String[] args) throws CloneNotSupportedException {
        Realizetype obj1 = new Realizetype();
        Realizetype obj2 = (Realizetype) obj1.clone();
        System.out.println("obj1==obj2?"+(obj1==obj2));
    }
}

结果:
具体原型创建成功!
具体原型复制成功!
obj1==obj2?false

3.2具体原型类例子——奖状(除了名字外,其他属性相同,可以通过复制原型实现)

public class PrototypeCitaion{
    public static void main(String[] args) throws CloneNotSupportedException {
        Citation citaion = new Citation("张三","同学:在2016学年第一学期中表现优秀,被评为三好学生。","仲恺农业工程学院");
        citaion.display();
        Citation citation2 = (Citation) citaion.clone();
        citation2.setName("李四");
        citation2.display();
    }
}

class Citation implements Cloneable{
    private String name;
    private String info;
    private String college;
    
    public Citation(String name, String info, String college) {
        // TODO Auto-generated constructor stub
        this.name = name;
        this.info = info;
        this.college = college;
        System.out.println("奖状创建成功!");
    }
    public Object clone() throws CloneNotSupportedException{
        System.out.println("奖状拷贝成功!");
        return (Citation)super.clone();
    }
    
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void display(){
        System.out.println(name+info+college);
    }
}

4.应用场景:
a.对象相同或相似,只有个别属性不同
b.对象的创建过程复杂,但是复制过程比较简单的时候。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容