Java设计模式——工厂模式

什么是工厂模式

工厂模式:简单的工厂模式,就是把对象的创建提出来单独处理。而标准的工厂模式,定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。
抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确确定具体类。

工厂方法

简单的工厂方法,常用于组织创建同一类对象的不同子类。
例如,抽象类Pizza有很多种具体的实现子类,将创建一个Pizza对象的所有方法抽出,放到一个PizzaFactory中,通过不同的type实现创建不同的具体对象。这样可以将具体实现与使用分离。可以更好的管理Pizza的创建工作。

class PizzaFactory {
    public static Pizza createPizza(String type) {
        Pizza pizza = null;
        if ("cheese".equals(type)) {
            pizza = new CheesePizza();
        } else if ("clam".equals(type)) {
            pizza = new ClamPizza();
        }
        return pizza;
    }
}

标准工厂方法模式,将对象的创建抽出到子类,父类不关心对象具体是哪一种,只关心对象的通用行为和方法,和创建方式。

public abstract class PizzaStore {

    protected abstract Pizza createPizza(String type);

    public Pizza orderPizza(String type) {
        Pizza pizza = createPizza(type);
        pizza.prepare();
        pizza.bake();
        pizza.cut();
        return pizza;
    }
}

如上所示,父类是一个抽象的构造Pizza(产品)的方法,具体创建Pizza的类型由子类实现createPizza()方法。


工厂模式的优点是,将创建对象的公共代码抽出接口来,这样可以将对具体实现的依赖改为对接口的依赖,代码会更有弹性,易于进行修改扩展等维护。
工厂模式还实现了依赖倒置原则,如果按照没有模式的方式写代码,Pizza的应用方会依赖Pizza的实现方,用工厂模式后,Pizza的应用方和Pizza的实现方都依赖createPizza()方法所在的抽象层。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值