工厂方法模式

概述

工厂方法模式是简单工厂模式的延伸,在工厂方法模式中,工厂父类负责定义产品对象的公共接口,而子工厂模式负责生成具体的产品对象


模式实例

之前的简单工厂统一生产所有品牌的手机,这次为每种品牌的手机提供一个子工厂,使具有更好的灵活性和可扩展性

抽象产品类 Phone

public abstract class Phone {

    public abstract void use();
}

具体产品类 HuaweiPhone

public class HuaweiPhone extends Phone {

    @Override
    public void use() {

        System.out.println("华为手机使用中....");
    }
}

具体产品类XiaomiPhone

public class XiaomiPhone extends Phone {

    @Override
    public void use() {

        System.out.println("小米手机使用中....");
    }
}

抽象工厂类 PhoneFactory

public interface PhoneFactory {

    Phone producePhone();
}

具体工厂类 HuaweiPFactory

public class HuaweiPFactory implements PhoneFactory {
    @Override
    public Phone producePhone() {
        System.out.println("华为工厂生产华为手机......");
        return new HuaweiPhone();
    }
}

具体工厂类 XiaomiPFactory

public class XiaomiPFactory implements PhoneFactory {

    @Override
    public Phone producePhone() {

        System.out.println("小米工厂生产小米手机......");
        return new XiaomiPhone();
    }

}

模式优缺点

工厂方法模式优点:

  • 向系统加入新产品时,无须修改抽象工厂和抽象产品提供的接口,也无须修改其他具体工厂和产品,只要添加一个具体工厂和具体产品即可

工厂方法模式缺点:

  • 添加新产品时,需要提供新的具体产品类和对应的具体工厂类,类的个数会成对增加,增加系统复杂性
posted @ 2020-03-06 21:50  低吟不作语  阅读(637)  评论(1编辑  收藏  举报