设计模式之工厂模式
来源:互联网 发布:中国银行密码控件mac 编辑:程序博客网 时间:2024/06/05 09:33
说到工厂,你可能会想到批量生产……想到这里,那么我觉得对工厂模式就理解的差不多了。
还是举一个栗子吧。比如Lenovo集团不是生产各种本子嘛,首先呢,人家肯定不止生产一种本子,比如哈,这个厂子已经很高端了,想生产个啥,只要一输入名字,一按按钮,“滴”一声,本子就出来了。
输入:“ThinkPad X1” 滴一声 输出一台ThinkPad X1笔记本输入:“V480” 滴一声 输出一台V480笔记本输入:“Yoga13” 滴一声 输出一台Yoga13笔记本输入…… 滴一声 输出一台……
你现在就能想到,只要能建立一个厂子,这条产品线上的所有产品那就是滴一下的问题。所以看到这里你基本上也能猜到代码咋写了
首先你是要生产笔记本的,那么大的总纲(这里的总纲就是计算机)总得有吧。
package com.creational.factoy;public interface Computer { public String getSymbol();}
总纲写好了,那每种型号的标准就继续写吧。
package com.creational.factoy;public class ThinkPadX1 implements Computer { @Override public String getSymbol() { return "TPX1"; }}
package com.creational.factoy;public class V480 implements Computer { @Override public String getSymbol() { return "V480"; }}
package com.creational.factoy;public class YOGA13 implements Computer { @Override public String getSymbol() { return "YOGA13"; }}
好,个产品系列写好了,下面就是关键的一个大的厂房生产线:
package com.creational.factoy;public class ComputerFactory { public static Computer createComputer(String serial){ if(serial.equalsIgnoreCase("TPX1")){ return new ThinkPadX1(); } else if(serial.equalsIgnoreCase("V480")){ return new V480(); } else if(serial.equalsIgnoreCase("YOGA13")){ return new YOGA13(); } throw new IllegalArgumentException(); }}
工厂类写好了,那下面用的时候就很爽了。
package com.creational.factoy;public class FactoryClient { public static void main(String[] args) { Computer computer = ComputerFactory.createComputer("TPX1"); System.out.println(computer.getSymbol()); computer = ComputerFactory.createComputer("V480"); System.out.println(computer.getSymbol()); computer = ComputerFactory.createComputer("YOGA13"); System.out.println(computer.getSymbol()); }}
最后呢还是放一张UML图,等后面心情好了再看看这图那里长得好看。
参考文献:
http://www.cnblogs.com/beijiguangyong/archive/2010/11/15/2302807.html#_Toc281750449
0 0
- 设计模式之工厂模式
- 设计模式之工厂模式
- 设计模式之工厂模式
- 设计模式之工厂模式
- 设计模式之工厂模式
- 设计模式之工厂模式
- 设计模式之---工厂模式
- 设计模式之工厂模式
- 设计模式之工厂模式
- 设计模式之工厂模式
- 设计模式之工厂模式
- 设计模式之-工厂模式
- 设计模式之工厂模式
- 设计模式之工厂模式
- 设计模式之工厂模式
- 设计模式之工厂模式
- 设计模式之 ------工厂模式
- 设计模式之工厂模式
- unity检测到某一物体不被特定的某一相机渲染
- PhysX初步学习内容记录
- oj第七周练习E
- pdf转换成jpg转换器的使用方法
- 指定线程延迟时间(毫秒)
- 设计模式之工厂模式
- java 实现IP访问量控制
- 转义字符和连接符
- Windows Communication Foundation(WCF)
- “开源”已经成为物联网开发生态的一种观念
- 解决 android.view.ViewGroup$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams
- Redis有序集合命令ZRANGEBYLEX详解与应用
- Linux 命令(文件和目录管理 - bzip2/bunzip2)
- android的EditText明暗切换时的全角问题