黑马程序员技术交流社区

标题: 【上海校区】【设计模式】原型模式 [打印本页]

作者: 不二晨    时间: 2018-12-31 10:02
标题: 【上海校区】【设计模式】原型模式
模式定义

原型模式允许你通过复制现有的实例来创建新的实例(在Java中,这通常意味着使用clone()方法,或者反序列化)。


一个生动的例子

原型接口:
public interface Prototype extends Cloneable {
}

原型实现类:
class ConcretePrototype implements Prototype {
        private String userName;
        private Integer age;

        public ConcretePrototype(String userName, Integer age) {
                System.out.println("constructor...");
                this.userName = userName;
                this.age = age;
        }

        @Override
        protected ConcretePrototype clone() throws CloneNotSupportedException {
                return (ConcretePrototype) super.clone();
        }

        public String getUserName() {
                return userName;
        }

        public void setUserName(String userName) {
                this.userName = userName;
        }

        public Integer getAge() {
                return age;
        }

        public void setAge(Integer age) {
                this.age = age;
        }

        @Override
        public String toString() {
                return "ConcretePrototype [userName=" + userName + ", age=" + age + "]";
        }
}

测试类/客户端类:
public class PrototypeTest {
        public static void main(String[] args) throws CloneNotSupportedException {
                ConcretePrototype concretePrototype = new ConcretePrototype("EagleLi", 23);
                System.out.println(concretePrototype);

                ConcretePrototype concretePrototypeClone = concretePrototype.clone();
                concretePrototypeClone.setAge(concretePrototypeClone.getAge() + 1);
                System.out.println(concretePrototypeClone);
        }
}
---------------------
转载,仅作分享,侵删
作者:EagleLi1
原文:https://blog.csdn.net/qq_21687635/article/details/85233929



作者: 不二晨    时间: 2019-1-3 10:08
奈斯




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2