设计模式系列1--工厂模式
来源:互联网 发布:网络打赏 人民日报 编辑:程序博客网 时间:2024/05/10 09:08
工厂模式,一般需要一个 工厂类, 一个产品虚拟类(接口也行) ,然后最少需要1个产品类, 最后写一个测试类
网上的例子蛮好, 去麦当劳吃饭, 我们只需要向 麦当劳服务员(工厂) 说我们需要点啥 即可:
1 吃的 超级类 或者接口
public interface Food {
public void diancan();
}
2.1 具体的 食品 汉堡
public class HanBao implements Food {
public HanBao ()
{
System.out.println("1个汉堡来了");
}
@Override
public void diancan() {
System.out.println("汉堡真好吃");
}
}
2.2 具体的食品 可乐
public class KeLe implements Food {
public KeLe()
{
System.out.println("一杯可乐来了");
}
@Override
public void diancan() {
System.out.println("可乐还是不错的 ");
}
}
3 工厂 (麦当劳服务员)
public class McFactory {
//麦当劳 餐厅 提供的产品 (吃的)
public static Food getFood(String name)
{
System.out.println("---服务员开始点餐---");
if (name.equals("kele"))
{
return new KeLe();
}
if (name.equals("hanbao"))
{
return new HanBao();
}
else return null;
}
}
4 测试类
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Food fd1=McFactory.getFood("hanbao");
fd1.diancan();
//吃饱了 再来一杯
Food fd2=McFactory.getFood("kele");
fd2.diancan();
}
}
5 结果:
---服务员开始点餐---
1个汉堡来了
汉堡真好吃
---服务员开始点餐---
一杯可乐来了
可乐还是不错的
工厂方法的优点 不是很熟悉, 但是缺点很明显:
所有的产品都在 factory里, 如果 以后 麦当劳增加了一个 烤鸡翅 怎么办, 只能再增加一个食品类,再修改factory类 ,增加一个食品类到是无所谓,但如果要修改系统已经存在的factory类, 则是尽量避免。
所以 马上就有了 工厂方法 模式
工厂方法 符合 java 的 开闭 原则, 可以无限制的扩展 产品(麦当劳的食品) 不需要修改 factory类,
只需要依葫芦画瓢 增加一个 生产 烤鸡翅的 产品类 一个 生产烤鸡翅的工程类, 自由扩展
- 设计模式系列1--工厂模式
- 工厂模式----设计模式系列
- 设计模式系列-工厂模式
- 设计模式系列-工厂模式
- 【设计模式系列】--工厂方法
- 【设计模式系列】--抽象工厂
- 设计模式之工厂系列
- 设计模式系列1(简单工厂模式)
- 读书笔记系列1:大话设计模式 -- 简单工厂模式
- 设计模式系列-工厂方法模式
- PHP设计模式系列 - 工厂模式
- 设计模式学习系列二:工厂模式
- 设计模式系列4-抽象工厂模式
- 设计模式系列6-工厂模式
- JAVA系列-设计模式-抽象工厂模式
- JAVA系列-设计模式-工厂模式
- Android设计模式系列--工厂方法模式
- Android设计模式系列--工厂方法模式
- 转载:用随机森林模型替代常用的回归和分类模型 http://blog.sciencenet.cn/u/lixinhai来自科学网博客李欣海
- 进程间通信 - 动态链接库实现
- 编辑框(EditText)介绍与应用
- 创建表空间+用户+权限
- 粒子系统三种方法
- 设计模式系列1--工厂模式
- HTC Incredible S S710E刷机指南
- 第4题:简单斐波那契
- 互联网,马云,刘强东
- 【实验四】字符串和多维数组
- 【设计模式】面向对象小结——重写与重载
- git删除目录下的所有文件并提交
- MyEclipse rest webservice 使用
- EXT 鼠标置于GridPanel某一行上显示提示tip消息