`

Simple Factory设计模式

阅读更多
一般我们要创建一个对象的时候,会使用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模式(简单工厂)

    Simple Factory模式: 定义创建对象的接口,并封装对象的创建。 一般情况下,我们为了提高内聚和松耦合,经常会使用多态来处理一些问题。抽象出一些类的公共接口作为抽象基类或者接口。这样的话,我们将会面临一个...

    java 设计模式 Facade外观模式 Simple Factory 简单工厂模式

    在这篇文章中,我们将深入探讨两种常见的设计模式:Facade(外观)模式和Simple Factory(简单工厂)模式。 首先,让我们关注Facade模式。外观模式是一种结构型设计模式,它的主要目标是提供一个统一的接口,用来...

    设计模式 t01SimpleFactory

    "t01SimpleFactory"指的是简单工厂(Simple Factory)设计模式,它是创建型设计模式之一。 简单工厂模式的核心思想是通过一个公共的工厂类来创建对象,这个工厂类负责实例化客户所需的对象,客户只需要知道具体的...

    设计模式之Factory

    本篇文章将详细探讨"设计模式之Factory",它是一种非常基础且重要的创建型设计模式。 Factory模式的核心思想是提供一个接口或者抽象类,用于创建某一类对象,但允许其子类决定实例化哪一个类。这种模式使得创建过程...

    SimpleFactory

    "SimpleFactory" 是设计模式中的一种,通常称为简单工厂模式。它属于创建型设计模式,主要目的是提供一个创建对象的公共接口,让客户端可以不关心具体对象的创建过程,只需要知道所需对象的类型即可。这种模式简化了...

    java工厂模式SimpleFactory

    总的来说,Java工厂模式SimpleFactory是一种实用的设计模式,能够帮助我们更好地管理对象的创建过程,提高代码的可维护性和可扩展性。通过将对象的创建过程封装在工厂类中,我们可以在不修改客户端代码的情况下,...

    Factory_Method&&Simple_Factory

    工厂方法模式(Factory Method Pattern)是设计模式中的创建型模式之一,主要解决对象创建过程中的复杂性问题。在软件工程中,当一个类不知道它所必须创建的对象的类的时候,它就不会实例化对象,而是使用一个工厂...

    001SimpleFactory.rar

    在软件设计模式中,"Simple Factory"(简单工厂)是一种常用的创建型模式,它提供了一种创建对象的最佳方式。简单工厂模式的主要目的是通过一个公共的工厂类来创建对象,而不是让客户端直接实例化具体的产品类。这样...

    Simple Factory模式.doc

    简单工厂模式(Simple Factory Pattern)是一种设计模式,属于创建型模式,它提供了一种创建对象的最佳方式。在简单工厂模式中,当一个类不知道它所必须创建的对象的类的时候,它会将这个任务委托给一个工厂对象。在...

    simplefactory.zip

    在我们的“simplefactory.zip”文件中,我们可以看到一个简单的工厂模式实现示例。这个例子可能包括以下几个部分: - 一个接口,例如`Product`,定义了产品类的基本行为。 - 若干个实现`Product`接口的具体产品类,...

    simpleFactory.zip

    本示例“simpleFactory.zip”关注的是设计模式中的一个基础模式——简单工厂(Simple Factory)模式,该模式在Java中得到了广泛的应用。简单工厂模式属于创建型设计模式,它的主要目的是通过一个公共的工厂类来创建...

    Simple Factory Pattern.rar【GoF的简单工厂模式(C#源码)】

    简单工厂(Simple Factory)模式又称为静态工厂方法(Static Factory Method)模式,属于类的创建型模式,通常它根据自变量的...SimpleFactory作为Creator。我已经用C#的源码编程了:请下载Simple Factory Pattern.rar

    SimpleFactory1

    简单工厂模式是一种创建型设计模式,它提供了一个创建对象的接口,但允许子类决定实例化哪一个类。这种模式主要用于当客户端(调用者)不关心产品是如何创建的,只关心产品的实例化过程,并且希望避免使用复杂的if.....

    JAVA设计模式(01):创建型-工厂模式【简单工厂模式】(Simple Factory)

    **简单工厂模式**是软件设计模式中的一种,属于创建型模式。在Java编程中,它是一种用于创建对象的简便方法,将对象的实例化过程封装到一个单独的工厂类中,使得客户端代码无需直接调用具体类的构造函数,而是通过...

    C#设计模式-吕震宇

    本资料来源于吕震宇博客,欢迎访问 ...经过整理,方便大家阅读。...C#设计模式(4)-Simple Factory Pattern C#设计模式(3) - 设计原则(2) C#设计模式(2) - 设计原则(1) C#设计模式(1) - 面向对象基本概念复习

    软件设计模式作业+答案

    软件设计模式和软件体系结构知识点总结 software design patterns and software architecture knowledge points summary 创建型软件设计模式: 工厂模式(Factory Pattern):符合开闭原则,提供了一种创建对象的...

    java 设计模式

    在这个压缩包中,提到了三种主要的设计模式:Bridge模式、Command模式和FactoryMethod以及SimpleFactory模式。 1. Bridge模式: Bridge模式是一种结构型设计模式,它将抽象部分与其实现部分分离,使得它们可以独立...

    几种设计模式的理解设计模式理解

    如文中所示,`SimpleFactory` 是工厂类,它根据 `productName` 创建 `Product` 接口的实现类对象。这种设计将对象的创建与使用分离,提高了代码的可维护性和灵活性。工厂模式的主要优点是解耦,缺点包括静态工厂方法...

    常见的十种设计模式Java工程文件

    在软件开发领域,设计模式是解决常见问题的模板或最佳实践,它们被广泛应用于构建可扩展、可维护的面向对象系统。本资源包含了十个经典的Java实现设计模式,这对于理解和掌握面向对象系统分析与设计有着极大的帮助。...

    Simple-Factory-for-Salary.rar_factory

    【标题】"Simple-Factory-for-Salary.rar_factory" 指的是一个使用简单工厂设计模式来计算薪资的项目,特别适用于Visual C++ 6.0(VC6)环境。这个项目可能包含了一个或多个用于创建薪资计算类实例的工厂类,以适应...

Global site tag (gtag.js) - Google Analytics