首页 java设计模式 java设计模式学习-简单工厂模式(实例)

java设计模式学习-简单工厂模式(实例)

专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类,简单工厂(Simple Factory)模式又称…

专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类,简单工厂(Simple Factory)模式又称为静态工厂方法(Static Factory Method)模式,属于类的创建型模式,但其不属于23种GOF设计模式之一,通常它根据自变量的不同返回不同的类的实例。

UML

简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建出哪一个产品类的实例。由上图可以看出,简单工厂模式有工厂、抽象产品、具体产品三个角色。

  • 工厂角色(Factory)
    是简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。可被外界直接调用来创建产品对象
  • 抽象产品角色(Product)
    是简单工厂模式所创建的所有产品对象的父类,它负责描述所有实例所共有的公共接口
  • 具体产品角色(ConcreteProductA及ConcreteProductB)
    是简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例

 

现实生活中大家都习惯刷卡买单,卡的种类很多,VISA、MASTERCARD等等…下面我们写代码模拟刷卡处理

 

package com.yq1012.创建型模式.工厂方法.简单工厂;

import java.io.Console;
 abstract class BankCardHandle
    {
        public abstract void HandleProcess();
    }



package com.yq1012.创建型模式.工厂方法.简单工厂;

import java.io.Console;
 abstract class BankCardHandle
    {
        public abstract void HandleProcess();
    }




package com.yq1012.创建型模式.工厂方法.简单工厂;
 class MasterCardHandle extends BankCardHandle
 {

	@Override
	public void HandleProcess() {
		System.out.println("MASTERCARD卡处理中");
	}

 }


package com.yq1012.创建型模式.工厂方法.简单工厂;
 class VisaHandle extends BankCardHandle
 {


	@Override
	public void HandleProcess() {

	     System.out.println("VISA卡处理中");

	}

 }



package com.yq1012.创建型模式.工厂方法.简单工厂;

public class Test {

	public static void main(String[] args) {

		HandleFactory factory= new HandleFactory();
		BankCardHandle bankCardHandle= factory.CreateBankCardHandle("VISA");
		bankCardHandle.HandleProcess();
	}
//静态工厂模式:顾名思义就知道他是用静态方法实现的,其创建的对象具有一定的特性,譬如说是某类的派生或者某接口的实现。其比较简单。
//	专门定义一个类来负责创建其他类的实例
//	,被创建的实例通常都具有共同的父类
//	,简单工厂(Simple Factory)模式又称为静态工厂方法(Static Factory Method)模式,
//	属于类的创建型模式,但其不属于23种GOF设计模式之一,通常它根据自变量的不同返回不同的类的实例。
//	优势劣势:
//	  在简单工厂模式中,工厂类是整个模式的关键,其包含必要的判断逻辑,能够根据外界给定的信息,决定究竟创建哪个类的实例,
//	外界可以不用去关注对象的创建,仅需要负责“消费”对象就可以了,明确区分了责任,有利于结构的优化。
//
//	不过,简单工厂模式的缺点也提现在其工厂类上,该类集中了所有实例的创建逻辑,违反了高内聚的责任分配原则,
//	当系统的具体产品类不断增多时,工厂类中条件判断过多,不利于扩展及维护,简单工厂模式的这些缺点,利用工厂方法模式可以得到一定的克服。
}

修改于http://www.cnblogs.com/kdalan/archive/2012/05/30/2524979.html

免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。
没有了

已是最新文章

为您推荐

行为型 Iterator,迭代器模式

行为型 Iterator,迭代器模式

Iterator,迭代器模式:提供一个方法顺序访问一个聚合对象的各个元素,而又不需要暴露该对象的内部表示。 ITERAT...
行为型 Interpreter,解释器模式

行为型 Interpreter,解释器模式

Interpreter,解释器模式:给定一个语言,定义他的文法的一个表示,并定义一个解释器,这个解释器使用该表示来解释语...
结构型 Proxy,代理模式

结构型 Proxy,代理模式

Proxy,代理模式:为其他对象提供一种代理以控制对这个对象的访问 PROXY 跟MM在网上聊天,一开头总是“hi,你好...
结构型 Flyweight,享元模式

结构型 Flyweight,享元模式

结构型 Flyweight,享元模式 FLYWEIGHT 每天跟MM发短信,手指都累死了,最近买了个新手机,可以把一些常...
结构型  外观模式, Facade

结构型 外观模式, Facade

外观模式, Facade FACADE 我有一个专业的Nikon相机,我就喜欢自己手动调光圈、快门,这样照出来的照片才专...
返回顶部