工厂模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
简单工厂模式与工厂模式区别:
(1)简单工厂模式的优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类。
(2)简单工厂模式违背开放-封闭原则
(3)工厂模式实现时客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在的,也就是说,工厂模式的简单工厂模式的内部逻辑判断移到了客户端代码来进行。
案例:
<?php interface Drink{ function getDrinkName(); } class AppleDrink implements Drink{ function getDrinkName() { echo '苹果味饮料'; } } class BananaDrink implements Drink{ function getDrinkName() { echo '香蕉味饮料'; } } interface FruitFactory{ function makeDrink(); } class AppleFactory implements FruitFactory{ function makeDrink() { return new AppleDrink(); } } class BananaFactory implements FruitFactory{ function makeDrink() { return new BananaDrink(); } } $appleFactory = new AppleFactory(); $apple = $appleFactory->makeDrink(); $apple->getDrinkName(); $bananaFactory = new BananaFactory(); $banana = $bananaFactory->makeDrink(); $banana->getDrinkName();