真正的工厂模式

本文通过一个比萨店的例子详细解释了工厂模式的概念。工厂模式定义了一个创建对象的接口,但是将具体实例化的类留给子类来决定。这与简单工厂方法不同,后者在一个地方处理所有事情。工厂模式更具灵活性,允许子类决定实例化哪个类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义

工厂模式定义了一个创建对象的接口,但由子类决定要实例的类是哪一个。工厂方法把类的实例化推迟到子类。

代码

public abstract class Pizza {
String name;

}

public class BeijingStyleHotPizza extends Pizza {
    public BeijingStyleHotPizza() {
        name="BeijingStyleHotPizza";
    }
}
public class BeiJingstylePizza extends Pizza{
    public BeiJingstylePizza() {
        name="BeiJingstylePizza";
    }
}
public abstract class PizzaStore {

    public Pizza orderPizza(String type){
        Pizza pizza;
        pizza=crePizza(type);
        return pizza;

    }
    protected abstract Pizza crePizza(String type);

}
public class BeijingPizzaStore  extends PizzaStore{

    @Override
    protected Pizza crePizza(String type) {
        if (type.equalsIgnoreCase("hot")) {
            return new BeijingStyleHotPizza();
        }else{
            return new BeiJingstylePizza();
        }   
    }

}
public class PizzaTest {
    public static void main(String[] args) {
        PizzaStore p1=new BeijingPizzaStore();
        Pizza p=p1.orderPizza("hot");
        System.out.println(p.name);
    }
}

总结

通过上面的例子我们可以看,和简单的工厂方法不同的是,简单工厂把全部的事情在一个地方都处理完了,而工厂方法确实创建了一个框架,让子类考虑如何实现。简单方法不具备工厂方法的弹性,因为简答工厂方法不能变更正在创建的产品,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值