一般我们要创建一个对象的时候,会使用new关键字来进行创建。但是,有时候,我们需要在程序运行的时候来动态决定创建哪个类的对象。比如:
public ParentClass doTask(int type){
ParentClass pc;
if(type > 0)
pc = new ClassA();
else if(type = 0)
pc = new ClassB();
else
pc = new ClassC();
pc.do1();
pc.do2();
pc.do3();
}
那么,为了提高程序的可维护性和可扩展性,我们可以考虑将对象创建部分的逻辑单独提出来。
示例代码:
public class SimpleFactoryTest{
public static void main(String[] args){
SimplePizzaFactory factory = new SimplePizzaFactory();
PizzaStore store=new PizzaStore(factory);
store.orderPizza("cheese");
store.orderPizza("pepperoni");
store.orderPizza("clam");
}
}
class PizzaStore{
SimplePizzaFactory factory;
public PizzaStore(SimplePizzaFactory factory){
this.factory = factory;
}
public Pizza orderPizza(String type){
Pizza pizza = factory.createPizza(type);
pizza.prepare();
pizza.bake();
pizza.cut();
pizza.box();
return pizza;
}
}
class SimplePizzaFactory{
public Pizza createPizza(String type){
Pizza pizza=null;
if(type.equals("cheese"))
pizza=new CheesePizza();
else if(type.equals("pepperoni"))
pizza=new PepperoniPizza();
else if(type.equals("clam"))
pizza=new ClamPizza();
return pizza;
}
}
abstract class Pizza{
protected abstract void prepare();
protected abstract void bake();
protected abstract void cut();
protected abstract void box();
}
class CheesePizza extends Pizza{
public void prepare(){
System.out.println("CheesePizza prepared");
}
public void bake(){
System.out.println("CheesePizza baked");
}
public void cut(){
System.out.println("CheesePizza cutted");
}
public void box(){
System.out.println("CheesePizza boxed");
}
}
class PepperoniPizza extends Pizza{
public void prepare(){
System.out.println("PepperoniPizza prepared");
}
public void bake(){
System.out.println("PepperoniPizza baked");
}
public void cut(){
System.out.println("PepperoniPizza cutted");
}
public void box(){
System.out.println("PepperoniPizza boxed");
}
}
class ClamPizza extends Pizza{
public void prepare(){
System.out.println("ClamPizza prepared");
}
public void bake(){
System.out.println("ClamPizza baked");
}
public void cut(){
System.out.println("ClamPizza cutted");
}
public void box(){
System.out.println("ClamPizza boxed");
}
}
执行结果:
C:\javastudy>java SimpleFactoryTest
CheesePizza prepared
CheesePizza baked
CheesePizza cutted
CheesePizza boxed
PepperoniPizza prepared
PepperoniPizza baked
PepperoniPizza cutted
PepperoniPizza boxed
ClamPizza prepared
ClamPizza baked
ClamPizza cutted
ClamPizza boxed
C:\javastudy>
分享到:
相关推荐
Simple Factory模式: 定义创建对象的接口,并封装对象的创建。 一般情况下,我们为了提高内聚和松耦合,经常会使用多态来处理一些问题。抽象出一些类的公共接口作为抽象基类或者接口。这样的话,我们将会面临一个...
在这篇文章中,我们将深入探讨两种常见的设计模式:Facade(外观)模式和Simple Factory(简单工厂)模式。 首先,让我们关注Facade模式。外观模式是一种结构型设计模式,它的主要目标是提供一个统一的接口,用来...
"t01SimpleFactory"指的是简单工厂(Simple Factory)设计模式,它是创建型设计模式之一。 简单工厂模式的核心思想是通过一个公共的工厂类来创建对象,这个工厂类负责实例化客户所需的对象,客户只需要知道具体的...
本篇文章将详细探讨"设计模式之Factory",它是一种非常基础且重要的创建型设计模式。 Factory模式的核心思想是提供一个接口或者抽象类,用于创建某一类对象,但允许其子类决定实例化哪一个类。这种模式使得创建过程...
"SimpleFactory" 是设计模式中的一种,通常称为简单工厂模式。它属于创建型设计模式,主要目的是提供一个创建对象的公共接口,让客户端可以不关心具体对象的创建过程,只需要知道所需对象的类型即可。这种模式简化了...
总的来说,Java工厂模式SimpleFactory是一种实用的设计模式,能够帮助我们更好地管理对象的创建过程,提高代码的可维护性和可扩展性。通过将对象的创建过程封装在工厂类中,我们可以在不修改客户端代码的情况下,...
工厂方法模式(Factory Method Pattern)是设计模式中的创建型模式之一,主要解决对象创建过程中的复杂性问题。在软件工程中,当一个类不知道它所必须创建的对象的类的时候,它就不会实例化对象,而是使用一个工厂...
在软件设计模式中,"Simple Factory"(简单工厂)是一种常用的创建型模式,它提供了一种创建对象的最佳方式。简单工厂模式的主要目的是通过一个公共的工厂类来创建对象,而不是让客户端直接实例化具体的产品类。这样...
简单工厂模式(Simple Factory Pattern)是一种设计模式,属于创建型模式,它提供了一种创建对象的最佳方式。在简单工厂模式中,当一个类不知道它所必须创建的对象的类的时候,它会将这个任务委托给一个工厂对象。在...
在我们的“simplefactory.zip”文件中,我们可以看到一个简单的工厂模式实现示例。这个例子可能包括以下几个部分: - 一个接口,例如`Product`,定义了产品类的基本行为。 - 若干个实现`Product`接口的具体产品类,...
本示例“simpleFactory.zip”关注的是设计模式中的一个基础模式——简单工厂(Simple Factory)模式,该模式在Java中得到了广泛的应用。简单工厂模式属于创建型设计模式,它的主要目的是通过一个公共的工厂类来创建...
简单工厂(Simple Factory)模式又称为静态工厂方法(Static Factory Method)模式,属于类的创建型模式,通常它根据自变量的...SimpleFactory作为Creator。我已经用C#的源码编程了:请下载Simple Factory Pattern.rar
简单工厂模式是一种创建型设计模式,它提供了一个创建对象的接口,但允许子类决定实例化哪一个类。这种模式主要用于当客户端(调用者)不关心产品是如何创建的,只关心产品的实例化过程,并且希望避免使用复杂的if.....
**简单工厂模式**是软件设计模式中的一种,属于创建型模式。在Java编程中,它是一种用于创建对象的简便方法,将对象的实例化过程封装到一个单独的工厂类中,使得客户端代码无需直接调用具体类的构造函数,而是通过...
本资料来源于吕震宇博客,欢迎访问 ...经过整理,方便大家阅读。...C#设计模式(4)-Simple Factory Pattern C#设计模式(3) - 设计原则(2) C#设计模式(2) - 设计原则(1) C#设计模式(1) - 面向对象基本概念复习
软件设计模式和软件体系结构知识点总结 software design patterns and software architecture knowledge points summary 创建型软件设计模式: 工厂模式(Factory Pattern):符合开闭原则,提供了一种创建对象的...
设计模式Golang实现《研磨设计模式》读书笔记Go语言设计模式Go语言设计模式的实例代码创建模式工厂简单模式(Simple Factory)工厂方法模式(工厂方法)抽象工厂模式(Abstract Factory)创建者模式(Builder)原型...
在这个压缩包中,提到了三种主要的设计模式:Bridge模式、Command模式和FactoryMethod以及SimpleFactory模式。 1. Bridge模式: Bridge模式是一种结构型设计模式,它将抽象部分与其实现部分分离,使得它们可以独立...
如文中所示,`SimpleFactory` 是工厂类,它根据 `productName` 创建 `Product` 接口的实现类对象。这种设计将对象的创建与使用分离,提高了代码的可维护性和灵活性。工厂模式的主要优点是解耦,缺点包括静态工厂方法...
在软件开发领域,设计模式是解决常见问题的模板或最佳实践,它们被广泛应用于构建可扩展、可维护的面向对象系统。本资源包含了十个经典的Java实现设计模式,这对于理解和掌握面向对象系统分析与设计有着极大的帮助。...