设计模式的意义在于:面向业务内容、业务数据结构和系统架构,高内聚低耦合、优雅的将平面逻辑立体化。



1 package designPattern;
2 /**
3 * 原型模式
4 * @author Administrator
5 */
6 public class C20_PrototypeTest {
7
8 /**
9 * 用原型实例指定创建对象的种类,并且通过copy这些原型创建新的对象
10 * 适用性:
11 * 1,一个系统应该独立于他的产品创建,构成和表示
12 * 2,要实例化的类是运行时指定的,例如:通过动态加载
13 * 3,为了避免创建一个与产品类层次平行的的工厂类层次
14 * 4,当一个类的实例只能有几个不同状态组合中的一种
15 * 建立适当的模型并克隆他们可能比每次用合适的状态手工实例化该类更方便一些
16 */
17 public static void main(String[] args) {
18 Prototype pro1=new ConcretePrototype("concretePrototype");
19 Prototype pro2=(Prototype)pro1.clone();
20 System.out.println(pro2.getName());
21 System.out.println(pro1.getName());
22 }
23 }
24 //1,Prototype 声明一个克隆自身的接口
25 class Prototype implements Cloneable
26 {
27 private String name;
28 public String getName() {
29 return name;
30 }
31 public void setName(String name) {
32 this.name = name;
33 }
34 @Override
35 protected Object clone()
36 {
37 try {
38 return super.clone();
39 } catch (Exception e) {
40 System.out.println(e.getMessage());
41 return null;
42 }
43 }
44 }
45
46 //2,ConcretePrototype 实现一个克隆自己的操作
47 class ConcretePrototype extends Prototype
48 {
49 ConcretePrototype(String name)
50 {
51 setName(name);
52 }
53 }