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

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

feed25c2a9d825d015b94daa7716071d.png

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

工厂角色(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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值