博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
工厂模型3——抽象模型
阅读量:6137 次
发布时间:2019-06-21

本文共 995 字,大约阅读时间需要 3 分钟。

想一下,如果pizza的加盟店用一些低廉的原料,这显然要砸了店里的招牌,所以要想办法让加盟店没办法改变原料。

public class NYPizzaStore extends PizzaStore{        @Override    protected Pizza createPizza(String type) {        // TODO Auto-generated method stub        Pizza pizza = null;        PizzaIngredientFactory factory = new NYPizzaIngredientFactory();        if(type.equals("Cheese")){            pizza = new CheesePizza(factory);        }                return pizza;    }}
public class CheesePizza extends Pizza{    PizzaIngredientFactory ingredientFactory;    public CheesePizza(PizzaIngredientFactory ingredientFactory) {        this.ingredientFactory = ingredientFactory;    }    @Override    public void prepare() {        // TODO Auto-generated method stub        sauce = ingredientFactory.createSauce();        cheese = ingredientFactory.createCheese();    }    }

这样,加盟店NYPizzaStore就不能擅自在prepare方法中改变原料。

由此可见:抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类

抽象工厂使用对象组合,对象的创建被实现在工厂接口所暴露出来的方法中。

转载于:https://www.cnblogs.com/wmm3416/p/3341307.html

你可能感兴趣的文章
SSIS从理论到实战,再到应用(3)----SSIS包的变量,约束,常用容器
查看>>
STM32启动过程--启动文件--分析
查看>>
垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
查看>>
淘宝的几个架构图
查看>>
Android扩展 - 拍照篇(Camera)
查看>>
JAVA数组的定义及用法
查看>>
充分利用HTML标签元素 – 简单的xtyle前端框架
查看>>
设计模式(十一):FACADE外观模式 -- 结构型模式
查看>>
iOS xcodebuile 自动编译打包ipa
查看>>
程序员眼中的 SQL Server-执行计划教会我如何创建索引?
查看>>
cmake总结
查看>>
数据加密插件
查看>>
linux后台运行程序
查看>>
win7 vs2012/2013 编译boost 1.55
查看>>
IIS7如何显示详细错误信息
查看>>
Android打包常见错误之Export aborted because fatal lint errors were found
查看>>
Tar打包、压缩与解压缩到指定目录的方法
查看>>
配置spring上下文
查看>>
Python异步IO --- 轻松管理10k+并发连接
查看>>
Oracle中drop user和drop user cascade的区别
查看>>