文章目录
  1. 1. 简单介绍
  2. 2. UML图
    1. 2.1. 参与者
  3. 3. 实例
  4. 4. 输出
  5. 5. 带Prototype Manager的原型模式

接下来继续介绍设计模式第三个–原型模式(Prototype)

简单介绍

用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。(Specify the kinds of objects to create using a prototypical instance, and create new objects by copying this prototype).

Prototype原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。

UML图

参与者

  1. Prototype:declares an interface for cloning itself
  2. ConcretePrototype:implements an operation for cloning itself.
  3. Client:creates a new object by asking a prototype to clone itself

实例

  1. Prototype类

    public interface Prototype extends Cloneable{
        Object clone();
    }
    
  2. ConcretePrototype1类

    public class ConcretePrototype1 implements Prototype{
        private String name;
        public ConcretePrototype1(String name) {
            this.name = name;
        }
        public Object clone(){
            Object object = null;
            try {
                object = super.clone();
            } catch (CloneNotSupportedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return object;
        }
    
        public void sayHello() {
            System.out.println("Hello!" + name);
        }
    }
    
  3. ConcretePrototype2类

    public class ConcretePrototype1 implements Prototype{
        private String name;
        public ConcretePrototype1(String name) {
            this.name = name;
        }
        public Object clone(){
            Object object = null;
            try {
                object = super.clone();
            } catch (CloneNotSupportedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return object;
        }
    
        public void sayHello() {
            System.out.println("Hello!" + name);
        }
    }
    
  4. Client类

    public class Client {
        public static void main(String arg[]) {
            ConcretePrototype1 pt = new ConcretePrototype1("Never");
            System.out.println("对象本身调用sayHello()");
            pt.sayHello();
    
            ConcretePrototype1 pt2 = (ConcretePrototype1) pt.clone();
            System.out.println("原型构造出来的对象调用sayHello()");
            pt2.sayHello();
        }
    }
    

输出

对象本身调用sayHello()
Hello!Never
原型构造出来的对象调用sayHello()
Hello!Never

带Prototype Manager的原型模式

下次再整理

文章目录
  1. 1. 简单介绍
  2. 2. UML图
    1. 2.1. 参与者
  3. 3. 实例
  4. 4. 输出
  5. 5. 带Prototype Manager的原型模式