设计模式之工厂模式
来源:互联网 发布:网络励志名言 编辑:程序博客网 时间:2024/05/01 17:49
工厂模式分为简单工厂模式(simple factory)和抽象工厂模式(abstract factory)
简单工厂模式(simple factory)是类的创建模式,又叫静态工厂方法(static factory method)模式。
设计一个生产人类的工厂,这个工厂需要分配生产的人来自哪儿
public class Factory { public static void main(String[] args) { People p = PeopleFactory.createPeople(1); p.from(); p = PeopleFactory.createPeople(2); p.from(); }}class PeopleFactory { public static People createPeople(int type) { if (type == 1) { return new ChinaPeople(); } else { return new EnglishPeople(); } }}interface People { public void from();}class ChinaPeople implements People { @Override public void from() { System.out.println("我来自中国"); }}class EnglishPeople implements People { @Override public void from() { System.out.println("我来自英国"); }}
好,这样生产中国人就使type为1就行,当然你是设计者,当然知道type=1就是中国人。
但是这样只能处理类似这样的你需要分配他是哪国的人,消耗资源比较高,可能你从这个工厂生产还要运到某某地方去。
现在就讲抽象工厂模式(abstract factory)。
首先完全实现‘开-闭 原则’,实现了可扩展。其次更复杂的层次结构,可以应用于产品结果复杂的场合。
现在我们制造工厂,使中国工厂生产中国人,英国工厂生产英国人,这样是不是有效的利用了地方资源,对吧。
public class Test { public static void main(String[] args) { People p = new ChinaFactory().createPeople(); p.from(); p = new EnglishFactory().createPeople(); p.from(); }}interface Factory{ public People createPeople();}class ChinaFactory implements Factory{ public People createPeople() { return new ChinaPeople(); }}class EnglishFactory implements Factory{ public People createPeople() { return new EnglishPeople(); }}interface People { public void from();}class ChinaPeople implements People { public void from() { System.out.println("我来自中国"); }}class EnglishPeople implements People { public void from() { System.out.println("我来自英国"); }}
这样就有效的解决了生产复杂产品的结果,统一生产线。
每一个模式都是针对一定问题的解决方案,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式针对的是多个产品等级结果。
那些书本上的辞藻我就不说了,重在理解,用多了就知道了,(*^__^*) 嘻嘻……
0 0
- 设计模式之工厂模式
- 设计模式之工厂模式
- 设计模式之工厂模式
- 设计模式之工厂模式
- 设计模式之工厂模式
- 设计模式之工厂模式
- 设计模式之---工厂模式
- 设计模式之工厂模式
- 设计模式之工厂模式
- 设计模式之工厂模式
- 设计模式之工厂模式
- 设计模式之-工厂模式
- 设计模式之工厂模式
- 设计模式之工厂模式
- 设计模式之工厂模式
- 设计模式之工厂模式
- 设计模式之 ------工厂模式
- 设计模式之工厂模式
- Java第三周-Date类的使用
- js小案例
- 项目使用的 safe.cs 帮助类
- Web安全之Cookie管理
- 顺序队列
- 设计模式之工厂模式
- 去除ListView默认点击背景,去除LietView滚动条
- Java第三周-Double与String类型变量相互转换
- Jquery取得iframe中元素的几种方法Javascript Jquery获取Iframe的元素、内容或者ID,反之也行!
- Java常见报错解决办法
- 快排算法精解
- 百度2015简答题
- 总结X
- 黑马程序员--Java基础--02-基础语法1