7 Aug 2014

Java设计模式:原型模式

注:本文为译文,原文出处java-design-patterns-in-stories

原型模式在大量需要使用相似对象的情况下被广泛应用. 原型模式实现对象的克隆,并且设置被更改的功能. 这种方式会消耗更少的资源, 为什么呢?

克隆方法通过创建新的对象并将成员变量值拷贝至新对象. 通常来说, 这种方式并不会比直接new一个对象在成本上有很大的改善. 但是在类的构造函数中, 如果有一些成本高昂的操作, 克隆方法就会带来巨大的效率提升.比如: 如果需要通过查询数据库获获取变量, 那么利用克隆方法就会避免不必要的重复查询,节省很大的开销.

1. 原型模式类图

prototype-pattern-class-diagram

2. 原型模式Java样例

package designpatterns.prototype;

//prototype
interface Prototype {
    void setSize(int x);
    void printSize();
 }

// a concrete class
class A implements Prototype, Cloneable {
    private int size;

    public A(int x) {
        this.size = x;
    }

    @Override
    public void setSize(int x) {
        this.size = x;
    }

    @Override
    public void printSize() {
        System.out.println("Size: " + size);
    }


    @Override
    public A clone() throws CloneNotSupportedException {
        return (A) super.clone();
    }
}

//when we need a large number of similar objects
public class PrototypeTest {
    public static void main(String args[]) throws CloneNotSupportedException {
        A a = new A(1);

        for (int i = 2; i < 10; i++) {
            Prototype temp = a.clone();
            temp.setSize(i);
            temp.printSize();
        }
    }
}

3. 原型模式在JSL中的应用

java.lang.Object - clone()

注:本文为译文,原文出处java-design-patterns-in-stories


Tags:
0 comments