原型设计模式

一、UML

Prototype.png

二、基本步骤

2.1、创建需要使用原型模式的类,实现Cloneable接口;
2.2、重写clone()方法,使用其父类的clone()方法构建一个对象;
2.3、将原对象的各个成员依次拷贝(赋值)给新创建的对象;
2.4、将新对象返回,需要做异常处理;

三、实现方式

3.1、定义
/**
 * @author lizihanglove
 * @date 2018/1/12
 * @email one_mighty@163.com
 * @desc 原型设计模式
 */

public class UrlPrototype implements Cloneable {
    private String host;
    private String port;
    private String protocol;

    public void printUrl() {
        System.out.println("The Url is:"+protocol+"//"+host+":"+port);
    }

    @Override
    public UrlPrototype clone() {
        try {
            UrlPrototype urlPrototype = (UrlPrototype) super.clone();
            urlPrototype.host = this.host;
            urlPrototype.port = this.port;
            urlPrototype.protocol = this.protocol;
            return urlPrototype;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public String getPort() {
        return port;
    }

    public void setPort(String port) {
        this.port = port;
    }

    public String getProtocol() {
        return protocol;
    }

    public void setProtocol(String protocol) {
        this.protocol = protocol;
    }
}

3.2、调用
  UrlPrototype original = new UrlPrototype();
        original.setHost("www.lizihanglove.website");
        original.setPort("8080");
        original.setProtocol("https");
        original.printUrl();
        System.out.println("--------------------------------------");
        UrlPrototype reborn = original.clone();
        reborn.printUrl();
        System.out.println("--------------------------------------");
        reborn.setPort("80");
        reborn.setProtocol("http");
        reborn.printUrl();


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

相关阅读更多精彩内容

  • 啥叫原型模式? 创建一个新的对象,然后通过复制现有的对象,称为原型。原型本身使用模板创建,后续实例是克隆模板产生的...
    江将蒋酱阅读 4,099评论 0 1
  • 一、介绍及定义 ①介绍:原型模式是一种创建型的模式。原型两个字表明了该模式应该有一个样板实例,用户从这个样板实例中...
    Ayres阅读 4,338评论 0 2
  • 浅复制与深复制 浅复制被复制对象的所有变量都含有与原来对象相同的值,而所有的对其他对象的引用仍然只指向原来的对象,...
    人失格阅读 3,841评论 0 1
  • 我们在日常中用药时,例如一些肺结核的用药、肿瘤用药、抗生素用药等,常常会听到“耐药”这个词,但是你是否真正了解耐药...
    锴哥的世界阅读 4,973评论 0 0
  • 《芳馨金玲》 (图文:阿翁) 2017年6月29日清晨,兼有旗袍佳丽和拉丁舞队员双重身份的美女吴金玲,参加...
    羲都魅影阅读 3,669评论 0 0

友情链接更多精彩内容