`
TRAMP_ZZY
  • 浏览: 137844 次
社区版块
存档分类
最新评论

设计模式-工厂方法

阅读更多
public abstract class PizzaStore {

	public void orderPizza(String type) {
		
		Pizza pizza = createPizza(type);
		pizza.prepare();
		pizza.bake();
		pizza.cut();
		pizza.box();
		
	}
	
	public abstract Pizza createPizza(String type);
}

public abstract class Pizza {

	public abstract void prepare();
	public abstract void bake();
	public abstract void cut();
	public abstract void box();
	
}

public class NYPizzaStore extends PizzaStore {

	@Override
	public Pizza createPizza(String type) {
		if ("cheese".equals(type)) {
			return new NYStyleCheesePizza();
		} else if ("veggie".equals(type)) {
			return new NYStyleVeggiePizza();
		}
		return null;
	}

}

public class ChicagoPizzaStore extends PizzaStore {

	@Override
	public Pizza createPizza(String type) {
		// TODO Auto-generated method stub
		return null;
	}

}

public class NYStyleCheesePizza extends Pizza {

	@Override
	public void prepare() {
		// TODO Auto-generated method stub

	}

	@Override
	public void bake() {
		// TODO Auto-generated method stub

	}

	@Override
	public void cut() {
		// TODO Auto-generated method stub

	}

	@Override
	public void box() {
		// TODO Auto-generated method stub

	}

}

public class NYStyleVeggiePizza extends Pizza {

	@Override
	public void prepare() {
		// TODO Auto-generated method stub

	}

	@Override
	public void bake() {
		// TODO Auto-generated method stub

	}

	@Override
	public void cut() {
		// TODO Auto-generated method stub

	}

	@Override
	public void box() {
		// TODO Auto-generated method stub

	}

}
 

public class BaseGenerator<T> implements Generator<T> {

	private Class<T> type;
	
	public BaseGenerator(Class<T> type) {
		this.type = type;
	}
	
	@Override
	public T next() {
		try {
			return type.newInstance(); 
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	} 
	// 泛型类型对静态函数不管用,在此还需要为该函数声明类型
	public static <T> Generator<T> create(Class<T> type) {
		return new BaseGenerator<T>(type);
	}
	// 对非静态的可直接使用
	public Generator<T> create1(Class<T> type) {
		return new BaseGenerator<T>(type);
	}
	
}
分享到:
评论

相关推荐

    c++设计模式-工厂方法模式

    工厂方法模式是面向对象设计模式中的一个创建型模式,它提供了一种封装对象创建过程的方式,使得具体的对象创建过程可以延迟到子类中进行。在C++编程中,工厂方法模式广泛应用于各种软件设计中,因为它能有效地解耦...

    设计模式-工厂方法模式视频

    工厂方法模式是面向对象设计中的一种经典设计模式,属于创建型模式。在软件工程中,当我们需要创建一系列相关或相互依赖的对象时,而不希望指定具体的类,工厂方法模式提供了一个很好的解决方案。 工厂方法模式的...

    设计模式-工厂方法代码

    在给定的“设计模式-工厂方法代码”文件中,我们可以深入探讨工厂方法这一特定的设计模式,以及它在Java编程中的应用。 工厂方法(Factory Method)是创建型设计模式之一,属于行为模式。它的主要作用是定义一个...

    Java设计模式-工厂方法

    工厂方法作为其中一种创建型设计模式,是Java程序员必须掌握的核心技能之一。这个模式的主要目标是提供一个接口来创建对象,但允许子类决定实例化哪一个类。这样,工厂方法将一个类的实例化延迟到了子类,使得代码更...

    设计模式-工厂方法模式

    工厂方法模式是设计模式中的创建型模式,它提供了一种创建对象的最佳方式。在这个模式中,一个类(称为工厂类)不再直接实例化具体的产品,而是定义一个接口或抽象类,由子类来决定实例化哪一个类。这样做的好处在于...

    iOS设计模式-工厂方法

    **工厂方法设计模式** 在iOS开发中,设计模式是一种被广泛采用的最佳实践,它提供了一种在不指定具体实现的情况下创建对象的方式。工厂方法(Factory Method)是面向对象设计模式中的一种,属于创建型模式。它定义...

    设计模式-工厂方法模式(C#)

    设计一个程序来读取多种不同存储格式的图片,针对每一种图片格式都设计一个图片读取器(ImageReader),如GIF格式图片读取器(GifReader)用于读取...请使用工厂方法模式实现该程序的设计,并使用UML画出该模式的类图。

    设计模式-工厂方法模式(讲解及其实现代码)

    工厂方法模式是设计模式中的一种创建型模式,它在软件工程中扮演着非常重要的角色。这个模式的主要目的是提供一个创建对象的接口,但允许子类决定实例化哪一个类。这样,工厂方法模式使得一个类的实例化延迟到了其...

    NET设计模式--工厂方法例子源码

    NET设计模式--工厂方法例子源码

    我讲设计模式--工厂方法

    "工厂方法"(Factory Method)是面向对象设计中的一种经典设计模式,它属于创建型模式,其主要目的是为了抽象产品的创建过程,使得具体的创建过程与使用产品的代码解耦。这个模式在《设计模式:可复用面向对象软件的...

    简单工厂模式-工厂方法模式-抽象工厂模式

    在软件设计模式中,工厂模式是一组非常基础且实用的设计模式,主要分为简单工厂模式、工厂方法模式和抽象工厂模式。这些模式都是为了解决对象创建的问题,通过封装对象的创建过程,使得代码更加灵活,易于扩展和维护...

    创建型设计模式---工厂设计模式实现

    创建型设计模式---工厂设计模式实现

    2.java设计模式-创建者模式-工厂方法模式.pdf

    java设计模式-创建者模式-简单工厂模式。详细的讲解了什么是工厂方法模式及应用场景和应用场景的代码事例。及各工厂模式的区别。

    JAVA-设计模式-创建型模式-工厂模式

    JAVA-设计模式-创建型模式-工厂模式

    java设计模式-工厂模式

    Java设计模式中的工厂模式是一种创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,当客户端请求创建一个产品对象时,它不会直接创建,而是调用一个工厂对象来完成创建工作。这种模式的核心在于封装了对象...

    c#设计模式-工厂模式

    《C#设计模式——工厂模式详解》 工厂模式是一种常用的设计模式,它的主要目的是通过抽象出产品创建过程,使得客户端代码不再直接new对象,而是通过工厂来获取对象,从而降低了代码之间的耦合度,提高了系统的可...

    设计模式之-工厂方法-FactoryMethod

    《设计模式之——工厂方法(Factory Method)》 在软件工程中,设计模式是一种解决常见问题的可重用解决方案,它被广泛应用于构建高质量、可维护的代码。工厂方法是面向对象设计模式的一种,属于创建型模式。这个...

    C#设计模式-工厂模式系列

    C#设计模式-工厂模式系列

    设计模式-工厂模式

    工厂模式是设计模式中的一个基础且重要的部分,它属于创建型设计模式,主要用于封装对象的创建过程,使得客户端不必关心具体的实现细节,提高了代码的可扩展性和可维护性。 工厂模式主要有三种形式:简单工厂模式、...

Global site tag (gtag.js) - Google Analytics