美文网首页
原型模式

原型模式

作者: 潜心之力 | 来源:发表于2020-08-04 16:31 被阅读0次

    一、模式简介

    定义:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。
    场景:对象之间相同或相似,创建过程比较麻烦,复制比较简单的时候。

    • 角色结构:
    • 抽象原型类:规定了具体原型对象必须实现的接口。
    • 具体原型类:实现抽象原型类的 clone() 方法,它是可被复制的对象。
    • 访问类:使用具体原型类中的 clone() 方法来复制新的对象。

    二、模式实现

    public class RealizeType implements Cloneable { -> 实现接口
        
        private String name;
        
        private Integer age;
        
        private String sex;
        
        @Override
        public Object clone() throws CloneNotSupportedException { -> 重写方法并修改修饰符
            return super.clone();
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    
        @Override
        public String toString() {
            return "RealizeType{" + "name='" + name  + ", age=" + age + ", sex='" + sex + '}';
        }
    }
    
    try {
        RealizeType realizeType1 = new RealizeType();
        realizeType1.setName("wjx");
        realizeType1.setAge(20);
        realizeType1.setSex("male");
        RealizeType realizeType2 = (RealizeType) realizeType1.clone();
        realizeType2.setName("xjw");
        System.out.println(realizeType1.toString());
        System.out.println(realizeType2.toString());
    } catch (Exception e) {
        e.printStackTrace();
    }
    

    相关文章

      网友评论

          本文标题:原型模式

          本文链接:https://www.haomeiwen.com/subject/wnbirktx.html