`
xmh517
  • 浏览: 64897 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

设计模式之原型模式

阅读更多
import java.util.HashMap;

interface Prototype extends Cloneable {

	public void setName(String name);

}

class ConcretePrototype implements Prototype {
	private String name;

	public String getName() {
		return this.name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public ConcretePrototype() {
		this.name = " this is propotype!";
	}

	/**
	 * * 覆写clone方法 *
	 * 
	 * @return Object
	 */
	public Object clone() {
		Object o = null;
		try {
			o = super.clone();
		} catch (CloneNotSupportedException e) {
			System.out.println(" PrototypeRam is not ConcretePrototype");
		}
		return o;
	}
}

class PrototypeManager {

	/** * 关于HashMap和HashTable的区别参考其他blog */
	private HashMap hm = null;

	private static PrototypeManager prototypeManager = null;

	private PrototypeManager() {
		hm = new HashMap();
	}

	public static synchronized PrototypeManager getPrototypeManager() {
		if (prototypeManager == null) {
			prototypeManager = new PrototypeManager();
		}
		return prototypeManager;
	}

	/**
	 * * 注册 *
	 * 
	 * @param name
	 *            String *
	 * @param prototype
	 *            Object
	 */
	public void register(String name, Object prototype) {
		hm.put(name, prototype);
	}

	/**
	 * * 解除注册 *
	 * 
	 * @param name
	 *            String
	 */
	public void unRegister(String name) {
		hm.remove(name);
	}

	/**
	 * * 获得原型实例 *
	 * 
	 * @param name
	 *            String *
	 * @return Object
	 */
	public Object getPrototype(String name) {
		Object o = null;
		if (hm.containsKey(name)) {
			o = hm.get(name);
		} else {
			try {
				/** * 自动查找原型管理器里不存在的类,并动态生成他 */
				o = Class.forName(name).newInstance();
				this.register(name, o);
			} catch (Exception e) {
				System.out.println("class " + name + " don't define "
						+ e.getMessage());
				e.printStackTrace();
			}
		}
		return o;
	}
}

/**
 * * *
 * <p>
 * Title:
 * </p> * *
 * <p>
 * Description: 客户端使用prototype模式
 * </p> * *
 * <p>
 * Copyright: Copyright (c) 2008
 * </p> * *
 * 
 * @author meconsea *
 * @version 1.0
 */
public class PrototypeDemo {
	PrototypeManager pm = null;

	public PrototypeDemo() {
		pm = PrototypeManager.getPrototypeManager();
	}

	public static void main(String args[]) {
		PrototypeDemo pc = new PrototypeDemo();
		String className = null;
		className = "ConcretePrototype";
		ConcretePrototype pr = null;
		pr = (ConcretePrototype) (pc.pm.getPrototype(className));
		if (pr != null) {
			ConcretePrototype[] pram;
			System.out.println("For loop before ConcretePrototype name == "
					+ pr.getName());
			pram = new ConcretePrototype[10];
			for (int i = 0; i < 10; i++) {
				/** * 生成一批克隆的对象,并比较他们和原型的不同 */
				pram[i] = (ConcretePrototype) pr.clone();
				System.out.println("ConcretePrototype name == "
						+ pram[i].getName());
				pram[i].setName(pram[i].getName() + i);
				System.out.println("clone changes after " + pram[i].getName()
						+ " old " + pr.getName());
			}
		}
	}
}
分享到:
评论

相关推荐

    设计模式之原型模式.docx

    【设计模式之原型模式】 设计模式是软件工程中的一种最佳实践,是对在特定上下文中反复出现的软件设计问题的解决方案。原型模式属于对象创建型模式,它的主要思想是通过复制已有对象来创建新对象,降低了类的实例化...

    设计模式之蝉

    《设计模式之蝉》这本书可能是对设计模式的一种形象化描述,或是以蝉为比喻来讲解设计模式的概念。蝉在地下蛰伏多年,最终破土而出,仅生活在地面上的几周时间。这一生命周期与设计模式的持久价值有异曲同工之妙,即...

    设计模式之美——教你写出高质量代码

    "设计模式之美——教你写出高质量代码"这个主题旨在帮助开发者更好地理解和应用设计模式,从而提升代码的质量和可维护性。设计模式不仅对面试有所帮助,也是职场发展中的必备技能,无论你使用哪种开发语言。 设计...

    Java设计模式之禅

    《Java设计模式之禅》是一本深入浅出讲解设计模式的书籍,书中不仅包含23种经典设计模式的案例,还详细介绍了设计模式背后的思想和原则,适合初学者以及对设计模式有一定了解的程序员阅读。本书旨在帮助读者理解如何...

    设计模式之美—学习笔记

    在这个“设计模式之美”的学习笔记中,我们将探讨一些主要的设计模式,以及它们在实际开发中的应用。 首先,我们从创建型模式开始。这类模式主要用于对象的创建,如单例模式(Singleton)、工厂模式(Factory ...

    23种设计模式详解PDF

    设计模式 的分类 总体来说设计模式分为三大类: 创建型模式(5): 工厂方法模式 、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式(7): 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、...

    设计模式的原型模式的例子

    原型模式(Prototype Pattern)是软件设计模式中的一种结构型模式,它的主要目的是通过复制已有对象来创建新对象,从而减少创建新对象的成本。在原型模式中,类的实例化过程被替换为对已有实例的克隆操作,尤其适用...

    人人都懂设计模式 人人都懂设计模式

    人人都懂设计模式 设计模式是软件开发中的一种解决方案,它提供了一种通用的设计思想和方法论,可以帮助开发者更好地设计和实现软件系统。设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。 在本书中...

    设计模式之我见

    ### 设计模式之我见 #### 设计模式的定义与意义 设计模式(Design Pattern)是一种在软件开发过程中被广泛采用的方法论,它基于一系列反复验证的解决方案,旨在提高代码的可读性、可重用性和可靠性。设计模式是...

    android设计模式之原型模式

    本文将深入探讨Android设计模式中的“原型模式”(Prototype Pattern),并结合提供的"prototype"压缩包中的示例代码进行解析。 原型模式是一种创建型设计模式,它的主要思想是通过复制已有对象来创建新对象,而...

    C_设计模式(23种设计模式)

    C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计...

    GOF设计模式中英文+设计模式精解中英文

    GOF(Gang of Four)设计模式,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位专家在他们的著作《设计模式:可复用面向对象软件的基础》中提出,被誉为设计模式的经典之作。本资源包含了GOF设计...

    Head First 设计模式 +Java设计模式(第2版)

    《Head First 设计模式》与《Java设计模式(第2版)》是两本非常重要的IT书籍,专注于软件开发中的设计模式。设计模式是解决软件设计中常见问题的经验总结,它们提供了一种标准的方法来处理特定场景下的问题,使得代码...

Global site tag (gtag.js) - Google Analytics