工厂方法(Factory Method)

来源:互联网 发布:淘宝关闭订单规则 编辑:程序博客网 时间:2024/04/26 23:26

前言:工厂方法模式通过抽象工厂类约定了一个创建对象的接口,并由抽象工厂的子类决定实际生产的对象。

栗子

工厂方法类图

场景描述

一家企业特别热衷于生产事物,就通过抽象类的形式(FoodFactory)约定了将来子孙创建工厂时必须遵循的模式,即每个子工厂都必须生产食物(Food),但是子工厂可以根据自己的喜好来决定生产的具体产品,如BeerFactory比较热衷于啤酒生产, FriedChickenFactory热衷于炸鸡。

程序语言

食物类

//食物类public class Food {}//啤酒类public class Beer extends Food {    public Beer() {        System.out.println("啤酒");    }}//炸鸡类public class FriedChicken extends Food {    public FriedChicken() {        System.out.println("炸鸡");    }}

父工厂类

//约定了子孙工厂类都要生产食物(Food)public abstract class FoodFactory {    public abstract Food produceFood();}

子工厂类

//炸鸡工厂public class FriedChickenFactory extends FoodFactory {    @Override    public FriedChicken produceFood() {        return new FriedChicken();    }}//啤酒工厂public class BeerFactory extends FoodFactory {    @Override    public Beer produceFood() {        return new Beer();    }}

客户端

public class Main {    public static void main(String[] args) {        FoodFactory foodFactory = new BeerFactory();        Food beer = foodFactory.produceFood();        foodFactory = new FriedChickenFactory();        Food chicken = foodFactory.produceFood();    }}

效果

1、父工厂类约定了子工厂类必须遵守的模型,适合用于生产一类商品,并且每个商品类一般单独使用。如啤酒、炸鸡同属于食物,但是可以拿来单独销售。
2、工厂方法便于扩展,当需要增加新的商品类时,只需要增加对应的工厂类即可。
3、类较多,每增加一个商品,都需要增加一个对应的工厂类。

0 0
原创粉丝点击