[设计模式]之工厂模式

工厂模式原理

主要用来实例化有共同接口的类,工厂模式可以动态决定应该实例化那一个类。

工厂模式分类

主要分为三类:简单工厂、工厂方法、抽象工厂。

1 简单工厂

简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。
不修改代码的话,是无法扩展的。

工厂角色(Creator):这是简单工厂模式的核心,由它负责创建所有的类的内部逻辑。当然工厂类必须能够被外界调用,创建所需要的产品对象。
抽象(Product)产品角色:简单工厂模式所创建的所有对象的父类,注意,这里的父类可以是接口也可以是抽象类,它负责描述所有实例所共有的公共接口。
具体产品(Concrete Product)角色:简单工厂所创建的具体实例对象,这些具体的产品往往都拥有共同的父类。
这里写图片描述
代码如下:

/**
 *  客户端
 */
public class Client {


    public static void main(String[] args) {
        // TODO Auto-generated method stub

        try {
            SimpleFactory.createProduct("ProductA");
            SimpleFactory.createProduct("ProductB");
            SimpleFactory.createProduct("ProductC");

        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }

}

/**
 * @param 抽象产品
 */
public class AbstractProduct {

}
/**
 * 简单工厂
 * */
public class SimpleFactory {

    public static AbstractProduct createProduct(String product) throws Exception{

        if(product.equals("ProductA")) return new ProductA();
        else if(product.equals("ProductB")) return new ProductB();
        else return new ProductC();
    }
}
/**
 * 产品类
 * */
public class ProductA extends AbstractProduct {

    public ProductA(){
        System.out.println("create product-a");
    }

}

2 工厂方法

工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。

在同一等级结构中,支持增加任意产品。

这里写图片描述

3 抽象工厂

抽象工厂是应对产品族概念的。比如说,每个汽车公司可能要同时生产轿车,货车,客车,那么每一个工厂都要有创建轿车,货车和客车的方法。

应对产品族概念而生,增加新的产品线很容易,但是无法增加新的产品。

这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值