`
小牛犊
  • 浏览: 96974 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

GoF:Prototype模式

阅读更多

1.意图:

 用原型实例制定创建对象的种类,并且通过拷贝这些原型创建新的对象。(G4)

例子:

public abstract class AbstractPrototype implements Cloneable{
	@Override
	protected Object clone(){
		Object o=null;
		try {
			o=super.clone();
		} catch (CloneNotSupportedException e) {
			e.printStackTrace();
		}
		return o;
	}
	public abstract void say();
	public String getStrName() {
		return strName;
	}
	public void setStrName(String strName) {
		this.strName = strName;
	}
	private String strName;
}

public class PrototypeA extends AbstractPrototype {

	public PrototypeA(String name) {
		setStrName(name);
	}
	@Override
	public void say() {
		System.out.println("PrototypeA");
	}
}

public class PrototypeB extends AbstractPrototype {
	public PrototypeB(String name) {
		setStrName(name);
	}
	@Override
	public void say() {
		System.out.println("PrototypeB");
	}
}

public class Test {
	public static void main(String[] agrs) {
		AbstractPrototype p = new PrototypeA("fy");
		AbstractPrototype k = (AbstractPrototype) p.clone();
		AbstractPrototype e = (AbstractPrototype) p.clone();
		p.say();
		k.say();
		e.say();
		AbstractPrototype q = new PrototypeB("flh");
		AbstractPrototype c = (AbstractPrototype) q.clone();
		AbstractPrototype u = (AbstractPrototype) q.clone();
		q.say();
		c.say();
		u.say();
	}
}

    运行结果:

PrototypeA
PrototypeA
PrototypeA
PrototypeB
PrototypeB
PrototypeB

 

分享到:
评论

相关推荐

    GoF:设计模式--可复用面向对象软件的基础(1-5章)

    第二章至第五章,作者们详细讲解了五种创建型设计模式:单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。这五种模式都...

    gof:GoF的23种设计模式

    GoF 设计模式GoF所提出的23种设计模式主要基于以下面向对象设计原则:对接口编程而不是对实现编程优先使用对象组合而不是继承23种设计模式分为三大类:...原型(Prototype)模式:将一个对象作为原型,通过对其进行复制

    GoF 23种设计模式的详解与应用

    创建模式:设计模式之Factory,设计模式之Prototype(原型),设计模式之Builder,设计模式之Singleton(单态). 结构模式:设计模式之Facade(外观),设计模式之Proxy(代理),设计模式之Adapter(适配器),设计模式之Composite...

    GOF(设计模式)概述

    《设计模式:可复用面向对象软件的基础》(Design Patterns: Elements of Reusable Object-Oriented Software)一书由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位作者共同编写,因此人们通常将其...

    GOF 设计模式 中文 高清

    5. **原型模式 (Prototype)**:用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。它简化了实例化过程。 6. **组合模式 (Composite)**:将对象组合成树形结构以表示“部分-整体”的层次结构。组合...

    设计模式精解-GoF 23种设计模式解析附C++.pdf

    - **Prototype模式**:通过克隆已有的实例来创建新对象,而不是通过创建新的实例。 #### 2. 结构型模式 - **Bridge模式**:将抽象部分与它的实现部分分离,使它们都可以独立地变化。 - **Adapter模式**:将一个类...

    设计模式精解-GoF 23种设计模式解析附C++实现源码.pdf

    - **1.5 Prototype模式**:用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。 - **应用场景**:对象初始化消耗资源过多时。 - **优点**:性能高,可以避免构造函数带来的问题。 - **缺点**:...

    design-patterns-gof:GoF设计模式实现

    5. **原型模式 (Prototype)**:通过复制已有对象来创建新对象,减少了类的实例化。Java提供了Cloneable接口和Object类的clone()方法来支持原型模式。 6. **适配器模式 (Adapter)**:将两个不兼容的接口通过适配器...

    GOF 23种设计模式

    《GOF 23种设计模式》是软件工程领域中极具影响力的一本书,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位大师合著,因此也被称为“Gang of Four”(GOF)的设计模式。这本书详细阐述了在面向...

    GoF 23种设计模式解析附C++实现源码(2nd Edition

    - **1.5 Prototype模式**:原型模式使用已有的对象实例作为原型,通过复制来创建新的对象实例。这种方式可以提高创建对象的速度和效率。 #### 2. 结构型模式 - **2.1 Bridge模式**:桥接模式将抽象部分与它的实现...

    GOF23设计模式讲解及C++源代码实现

    GOF,即 Gamma、Erich, Johnson, Vlissides 四位大师合著的《设计模式:可复用面向对象软件的基础》一书,提出了23种经典的设计模式。这些模式为软件设计提供了通用的解决方案,使得开发者能够利用前人的经验,提高...

    GoF+23种设计模式解析附C++实现源码(2nd+Edition).pdf

    **定义**: Prototype模式使用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。 **应用场景**: 当创建新对象的成本较高时,或者需要大量相似对象时。 **C++实现**: Prototype模式的核心是定义一个...

    设计模式精解-GoF23种设计模式解析

    - **1.5 Prototype模式**:Prototype模式使用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。 - 这种模式适用于对象创建成本较高或者需要大量实例化的场景,通过克隆现有的实例来快速生成新对象...

    Design-Patterns-JS, 在Javascript中,实现了所有 23 ( GoF ) 设计模式.zip

    Design-Patterns-JS, 在Javascript中,实现了所有 23 ( GoF ) 设计模式 设计模式 JS 在这里,你将使用Prototype和ES6类在JavaScript中实现 23 ( GoF ) 设计模式。 你可以使用英镑 docs.md 来加快示例的概述。遵循...

    设计模式精解-GoF 23种设计模式解析附C++实现源码

    5. **Prototype模式** - **定义**:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 - **应用场景**:当一个类的实例只能有几个不同状态组合中的一种时使用。 - **优点**:可以通过克隆已有...

    设计模式精解-GoF 23种设计模式解析附

    - **Prototype模式**:用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。 - **应用场景**:当创建对象的成本很高时。 - **优点**:避免了创建过程中的高昂代价。 - **缺点**:需要为每个类配备...

Global site tag (gtag.js) - Google Analytics