`

简单工厂模式(Simple Factory)

 
阅读更多
简单工厂模式又称静态工厂方法模式(Static Factory Method Pattern),是不同工厂方法模式的一个特殊实现。
简单工厂模式的引进
水果接口规定出所有的水果必须实现的接口,包括任何水果类必须具备的方法:种植plant(),生长grow(),收获harvest().如下图:


水果接口源代码:
/**
 * 水果
 * @author Administrator
 *
 */
public interface Fruit {
	//生长
	void grow();
	//种植
	void plant();
	//收获
	void harvest();

}


苹果类的源代码:
/**
 * 苹果
 * @author Administrator
 *
 */
public class Apple implements Fruit{
	
	private int treeAge;

	public int getTreeAge() {
		return treeAge;
	}

	public void setTreeAge(int treeAge) {
		this.treeAge = treeAge;
	}

	@Override
	public void grow() {
		System.out.println("Apple grow ...");
	}

	@Override
	public void plant() {
		System.out.println("Apple plant ...");
	}

	@Override
	public void harvest() {
		System.out.println("Apple harvest ...");
	}

}


葡萄类的源代码:
/**
 * 葡萄
 * @author Administrator
 *
 */
public class Grape implements Fruit {
	//是否有籽
	private boolean seedless;

	public boolean isSeedless() {
		return seedless;
	}

	public void setSeedless(boolean seedless) {
		this.seedless = seedless;
	}

	@Override
	public void grow() {
		System.out.println("Grape grow ...");
	}

	@Override
	public void plant() {
		System.out.println("Grape plant ...");
	}

	@Override
	public void harvest() {
		System.out.println("Grape harvest ...");
	}

}

草莓类的源代码:
/**
 * 草莓
 * @author Administrator
 *
 */
public class Strawberry implements Fruit {

	@Override
	public void grow() {
		System.out.println("Strawberry grow ...");
	}

	@Override
	public void plant() {
		System.out.println("Strawberry plant ...");

	}

	@Override
	public void harvest() {
		System.out.println("Strawberry harvest ...");

	}

}

园丁类的源代码:
public class FruitGardener {
	
	/**
	 * 静态工厂方法
	 * @param which
	 * @return
	 */
	public static Fruit factory(String which){
		if(which.equalsIgnoreCase("apple")){
			return new Apple();
		}
		else if(which.equalsIgnoreCase("grape")){
			return new Grape();
		}
		else if(which.equalsIgnoreCase("strawberry")){
			return new Strawberry();
		}else{
			return null;
		}
	}
	public static void main(String[] args) {
		FruitGardener.factory("apple").grow();
		FruitGardener.factory("grape").plant();
		FruitGardener.factory("strawberry").harvest();
		
	}

}



简单工厂模式的结构:
简单工厂根据传入的参量决定创建哪一类的产品的实例,如下图:




简单工厂模式涉及到工厂角色,抽象产品角色以及具体产品角色等三类角色:
1)工厂类角色(Creator)
2)抽象产品角色(Product)
3)具体产品角色(ConcreteProduct)

简单工厂模式在Java中的运用:
DateFormat与简单工厂模式:
1)DateFormat本身是一个抽象类,但是它提供很多静态工厂方法,

 
public final static DateFormat getTimeInstance();
  public final static DateFormat getTimeInstance(int style);
  public final static DateFormat getTimeInstance(int style,Locale aLocale);
  .....

2)getTimeInstance并没有直接调用调用DateFormat的构造方法,而是返回DateFormat的具体子类SimpleDateFormat,而getTimeInstance方法返回SimpleDateFormat的实例,并且仅它声明为DateFormat类型,这就是纯正的多态性原则的运用。
  • 大小: 28 KB
  • 大小: 13 KB
分享到:
评论

相关推荐

    java工厂模式SimpleFactory

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

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

    在Java中,简单工厂模式适用于对象的创建过程较为固定或不复杂的情况。它定义一个公共的工厂类,根据传入的参数或者条件来决定返回哪个具体类的实例。这种方式降低了代码的耦合度,使得在不修改客户端代码的情况下,...

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

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

    设计模式 创建型模式 Simple Factory模式(简单工厂)

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

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

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

    SimpleFactory

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

    工厂模式FactoryMode

    在Java中,工厂模式有三种主要形式:简单工厂模式、工厂方法模式和抽象工厂模式。 1. 简单工厂模式:也称为静态工厂模式,它通过一个静态方法来创建对象。在这个模式中,工厂类负责决定实例化哪个产品类。这种模式...

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

    简单工厂模式(Simple Factory Pattern)是一种静态工厂方法,它通过一个公共的工厂类来创建对象。这个工厂类通常包含一个或多个静态方法,用于根据输入参数创建不同类型的实例。这种模式的优点在于客户端代码无需...

    Factory_Method&&Simple_Factory

    简单工厂模式(Simple Factory Pattern)是工厂方法模式的一个简化版本,它没有定义工厂接口,只有一个具体工厂类负责创建所有对象。简单工厂模式适用于产品种类较少,且不会频繁改变的情况。 在实际应用中,工厂...

    Java设计模式之工厂模式(Factory)

    1. **简单工厂模式(Simple Factory)**:适用于需求较为简单的情况,主要负责创建一系列相关的对象。 2. **工厂方法模式(Factory Method)**:用于处理不同类型的对象创建过程,提供了一种接口来创建一系列相关或...

    简单工厂模式

    简单工厂模式是软件设计模式中的一种基础模式,它属于创建型模式,主要解决对象的创建问题,降低了系统与具体创建对象之间的耦合度。在这个设计模式课程资料中,我们将使用Java语言来阐述和实现简单工厂模式,并在...

    设计模式 t01SimpleFactory

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

    工厂模式(简单工厂,普通工厂,抽象工厂)代码java

    - 在`SimpleFactory`文件中,我们可以看到一个简单的工厂类,它根据输入类型创建相应的对象。这种模式适用于对象种类较少且不常变动的情况。 2. **普通工厂模式**(工厂方法模式): - 工厂方法模式将对象的创建...

    设计模式之Factory

    Factory模式通常分为简单工厂(Simple Factory)、工厂方法(Factory Method)和抽象工厂(Abstract Factory)三种主要类型。 1. **简单工厂**:这是最简单的形式,它包含一个静态方法,根据传入的参数返回特定类型...

    工厂模式(Factory)

    1. **简单工厂模式(Simple Factory Pattern)**:由一个静态方法来创建产品对象,它是最简单的工厂模式形式,但不利于扩展,因为静态方法不能被继承。 2. **工厂方法模式(Factory Method Pattern)**:定义一个...

    简单工厂模式应用

    简单工厂模式是一种创建型设计模式,它提供了一个创建对象的接口,但允许子类决定实例化哪一个类。这种类型的设计模式属于类创建模式,因为工厂类是基于类的。在简单工厂模式中,一个工厂类根据传入的参数来决定创建...

    反射简单工厂模式工厂模式

    `simplefactory`文件可能包含一个简单的工厂类,它负责根据输入条件(如参数)返回相应类型的实例。这种模式将对象的创建与使用分离,使得客户端代码无需关注具体对象的创建过程,从而提高了代码的可读性和可维护性...

    simplefactory.zip

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

Global site tag (gtag.js) - Google Analytics