`
TJYCHYANGCHENHUI
  • 浏览: 12518 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

Design Pattern (Factory Method)[Simple Factory Pattern]

阅读更多
  前言:
     每个事物,每个方法,没有是完美的,当一种目前的方法解决不了目前的问题的时候,一种模式的多种形态就产生了,在产生的同时,暴露出了以前解决方法的不足之处同时也体现出了新的解决方法的优势!所以说这完全体现了事物的完美性取决相对的环境与条件之下,他们没有好坏之分,没有优缺点之分,这些方法只是在对待相同本质的问题,但是比较复杂的情况下不适应复杂因素的改变摆了!

   工厂模式的几种形态
 

 
  
 

       [1] 简单工厂模式[Simple  Factory  Pattern]      
       [2] 工厂方法模式[Factory  Method  Pattern]
       [3] 抽象工厂模式[Abstract Factory Pattern]


  下面是本人对简单工厂模式[Simple Factory Pattern]的理解[如有错误的认识请指出]
 
[a] 就像我们平常写的一样,对于一个简单工厂模式[Simple Factory Pattern] 拥有最简单的几种方式与方法

package com.tjych.factorypattern.simplefactory;

   public interface Product {
	public void sampleMethod();

   }

        
    



  


  package com.tjych.factorypattern.simplefactory;

public class Product1 implements Product {

	@Override
	public void sampleMethod() {
		System.out.println("This is the method sampleMethod of Product1");

	}

}

   


  
  package com.tjych.factorypattern.simplefactory;

/**
 * 
 * @author 杨晨辉
 * 
 */
public class Product2 implements Product {

	@Override
	public void sampleMethod() {
		System.out.println("this is the sampleMethod of Product2");
	}

}

    

   
package com.tjych.factorypattern.simplefactory;

/**
 * 工厂类,用于产生客户希望的Product
 * 
 * @author 杨晨辉
 * 
 */
public class Factory {

	public static final int PRODUCT_PRUDCT1 = 1;
	public static final int PRODUCT_PRODUCT2 = 2;

	/**
	 * 静态的工厂方法,通过参数判断需要的是什么产品类型
	 * 
	 * @param productType
	 * @return
	 */
	public static Product createProduct(int productType) {

		switch (productType) {
		case PRODUCT_PRUDCT1: {
			return new Product1();
		}
		case PRODUCT_PRODUCT2: {
			return new Product2();
		}
		default:
			return null;
		}
	}

}

简单工厂的UML类图

  


  

       [a]如代码在,Factory类中的createFactory(int productType)方法中传递了一个int 类型的变量可以让工厂类进行根据以前的判断逻辑进行对工厂类构建产品类


  [b] 在以下的例子中我们将创建一个我自己成为具有状态的工厂模式
   

     参评类不改变
    更改一下工厂类
    package com.tjych.factorypattern.statesimplefactory;

import java.util.HashMap;
import java.util.Map;

/**
 * 工厂类,用于产生客户希望的Product
 * 
 * @author 杨晨辉
 * 
 */
public class StateFactory {

	/*#com.tjych.factorypattern.simplefactory.Product lnkProduct*/
    public static final int PRODUCT_PRODUCT1 = 1;
	public static final int PRODUCT_PRODUCT2 = 2;
	
	
	private static Map<Integer,Product> storageMap = new HashMap<Integer,Product>();
	
	

	/**
	 * 静态的工厂方法,通过参数判断需要的是什么产品类型
	 * 
	 * @param productType
	 * @return
	 */
	public static Product createProduct(int productType) {

		switch (productType) {
		case PRODUCT_PRODUCT1: {
			if(storageMap.get(PRODUCT_PRODUCT1) == null){
				return new Product1();
			}else{
				return storageMap.get(PRODUCT_PRODUCT1);
			}			
		}
		case PRODUCT_PRODUCT2: {
			if(storageMap.get(PRODUCT_PRODUCT2) == null){
				return new Product2();
			}else{
				return storageMap.get(PRODUCT_PRODUCT2);
			}			
		}
		default:
			return null;
		}
	}

}


   


   下图是图片






  由图可以看到本工厂类中只是改变了一下,把具有一种产品的对象的实例保存在一个小仓库中,在下次客户端使用的时候将不再重新构建,而是直接从仓库中取出,但是这种情况只是满足在系统可以要求一个产品的状态唯一, 如果系统要求构建的是不同的产品对象,侧 不能够使用这种情况,本例只是自己在构建的时候的想的!
  

  • 大小: 23 KB
  • 大小: 17 KB
  • 大小: 21.2 KB
  • 大小: 18.9 KB
分享到:
评论

相关推荐

    Factory_Method&&Simple_Factory

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

    DesignPattern

    在示例中,可能有一个`SimpleFactory`类,其中包含一个静态方法`createProduct()`,根据传入的参数决定创建哪种具体产品。 4. **客户端代码**:使用工厂类创建产品对象,而不直接实例化具体产品。这样,当需要添加...

    Design.Patterns.Explained.Simply

    This book is fast and simple way to get the idea behind each of the 29 popular design patterns. The book is not tied to any specific programming language and will be good for you as long as you have a...

    design-pattern-java.pdf

    六个创建型模式 六个创建型模式 简单工厂模式-Simple Factory Pattern 工厂三兄弟之简单工厂模式(一) 工厂三兄弟之简单工厂模式(二) 工厂三兄弟之简单工厂模式(三) 工厂三兄弟之简单工厂模式(四) 工厂方法...

    design-pattern

    ##### 3.1 简单工厂模式 (Simple Factory Pattern) 简单工厂模式提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。该模式适用于当一个系统只需要提供一个产品族中的一个实例时。 1. **工厂...

    DesignPattern(VS2019_观察者模式_工厂模式_抽象工厂模式)完整示例源代码.zip

    在压缩包中的"DesignPattern"文件夹中,你应该能够找到分别展示了这些模式的源代码实现。通过阅读和理解这些示例,你可以学习如何在实际项目中应用观察者模式和工厂模式,以及它们如何帮助提高代码的可读性、可维护...

    良葛格DesignPattern学习笔记

    良葛格的《Design Pattern学习笔记》不仅涵盖了经典的GOF设计模式,还额外介绍了几种多线程模式,这使得这份学习笔记成为了一个宝贵的学习资源。下面将对其中的部分设计模式进行详细介绍。 #### 二、GOF设计模式 ...

    C#设计模式-吕震宇

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

    designpattern:设计图案的使用

    1)简单工厂模式(Simple Factory) 2)工厂方法模式(Factory Method) 3)抽象工厂模式(Abstract Factory) 这三种模式从上到下逐步抽象,并且更具一般性。 GOF在《设计模式》一书中将工厂模式分为两类...

    DoFactory Design Framework 3.5 C#

    例如,工厂模式的类库可能包含了抽象工厂(Abstract Factory)、简单工厂(Simple Factory)、工厂方法(Factory Method)和静态工厂(Static Factory)等不同类型的工厂模式实现。这些类库提供了预定义的接口和类,...

    DesignPattern.Samples.CSharp:23种面向对象设计模式示例代码(C#实现)

    简单工厂(Simple Factory)模式 ③设计模式的征途-03。工厂方法(Factory Method)模式 ④设计模式的征途-04。抽象工厂(Abstract Factory)模式 ⑤设计模式的征途-05。原型(原型)模式 ⑥设计模式的征途-06。建造...

    uu-design-pattern:23种设计模式案例

    23种设计模式演示代码文件结构图gof23 |- creational(创建型模式) |- simplefactory 简单工厂模式案例 |- factorymethod 工厂方法模式案例 |- abstractfactory 抽象工厂模式案例 |- builder 建造者模式案例 |- ...

    design_pattern:设计模式研究商店

    Java中的`AbstractFactory`、`SimpleFactory`和`FactoryMethod`都是其变体。 3. **抽象工厂模式**:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。 4. **建造者模式**:将复杂对象的构建...

    DesignPattern:在这里写下 23 个 DesignPatterns,我可以分享最好的来解释它是什么

    Java中的`AbstractFactory`和`SimpleFactory`都是其具体实现。 3. **抽象工厂模式 (Abstract Factory)**:为创建一系列相关或相互依赖的对象提供一个接口,而无需指定它们的具体类。Java中,可以通过接口和多态实现...

    工厂模式代码

    1. 简单工厂模式(Simple Factory Pattern):也称为静态工厂方法模式,通过一个静态方法来创建对象,该静态方法根据传入的参数返回不同的实例。 2. 工厂方法模式(Factory Method Pattern):属于多态性设计模式,...

    Java中的design-patterns::open_book:使用通俗易懂的案例,类图,以及配套学习笔记来详解Java的二十种设计模式!

    :check_mark:工厂方法模式( Factory Method Pattern ) :memo: , :check_mark:抽象工厂模式( Abstract Factroy Pattern ) :memo: , :check_mark:建造者模式( Builder Pattern ) :memo: , :check_mark:单例...

    Java与设计模式.ppt

    public class SimpleFactory extends Factory { public Sample creator() { return new SampleA(); } public Sample2 creator(String name) { return new Sample2A(); } } public class BombFactory ...

    [源代码] 《易学 设计模式》 随书源代码

    第03章 术业有专攻:简单工厂模式 (SimpleFactory) 第04章 精益求精:工厂方法模式 (FactoryMethod) 第05章 再接再厉:抽象工厂模式 (AbstractFactory) 第06章 孜孜不倦:创建者模式 (Builder) 第07章 照猫画虎:...

    工厂模式示例

    例如,简单工厂模式可能包含一个名为`SimpleFactory`的类,其中有一个静态方法用于根据输入条件返回相应的产品实例。工厂方法模式可能有一个`Product`接口和多个实现它的具体产品类,以及一个`Factory`抽象类,它...

Global site tag (gtag.js) - Google Analytics