- 浏览: 328129 次
- 性别:
- 来自: 广州
文章分类
最新评论
工厂方法模式是类的创建模式,它的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中,它仅仅负责给出具体工厂子类必须实现的接口,而不接触哪一个产品类应当被实例化这个细节.
二:优化简单工厂模式中的"农场"系统
现在把这个农场的管理变得更加专业化:苹果由"苹果园丁"负责,葡萄由"葡萄园丁"负责,草莓由"草莓园丁"负责,这三个"园丁"都是实现了抽象的"水果园丁"接口的具体工厂类,而"水果园丁"则扮演抽象工厂的角色.源代码如下:
抽象工厂角色和抽象产品角色都可以选择由java接口或者java抽象类来实现.
三:Java语言中工厂方法模式的例子
A:聚集中的应用
多个对象聚在一起形成的总体称之为聚集,聚集对象是能够包容一组对象的容器对象。所有的Java聚集都实现了java.util.Collection接口,这个接口规定所胡的java聚集必须提供一个iterator方法,返回一个Iterator类型的对象,一个个体的Java聚集对象会通过这个iterator方法返回一个具体的Iterator类,可以看出,这个iterator方法就是一个工厂方法.
B:URL和URLConnection
URL对象提供一个openConnection的工厂方法返回一个URLConnection类型的对象,由于URLConnection是一个抽象类,因此返回的不可能是这个抽象类的实例,而必然是其具体子类的实例,这就应用了工厂方法。 。
四:工厂方法模式与其他模式的关系
A:模板方法模式
工厂方法模式和模板方法模式常常一起使用,工厂方法模式将创建工作推迟到子类,模板方法将剩余逻辑交给子类。
.........
二:优化简单工厂模式中的"农场"系统
现在把这个农场的管理变得更加专业化:苹果由"苹果园丁"负责,葡萄由"葡萄园丁"负责,草莓由"草莓园丁"负责,这三个"园丁"都是实现了抽象的"水果园丁"接口的具体工厂类,而"水果园丁"则扮演抽象工厂的角色.源代码如下:
package cai.milenfan.basic.test; public interface Friut { public void plant(); public void grow(); public void harvest(); public String getFriutName(); public void setFriutName(String friutName); }
package cai.milenfan.basic.test; public class Apple implements Friut{ private String friutName = ""; public void grow() { System.out.println(this.friutName " is growing......,AA"); } public void harvest() { } public void plant() { } public String getFriutName() { return friutName; } public void setFriutName(String friutName) { this.friutName = friutName; } }
package cai.milenfan.basic.test; public class Strawberry implements Friut{ private String friutName=""; public void grow() { System.out.println(this.friutName " is growing......,BB"); } public void harvest() { } public void plant() { } public String getFriutName() { return null; } public void setFriutName(String friutName) { this.friutName = friutName; } }
package cai.milenfan.basic.test; public class Grape implements Friut{ private String friutName=""; public void grow() { System.out.println(this.friutName "is growing......"); } public void harvest() { } public void plant() { } public String getFriutName() { return null; } public void setFriutName(String friutName) { this.friutName = friutName; } }
package cai.milenfan.basic.test; //水果园丁 public interface FriutGardener { //工厂方法 public Friut factory(); }
package cai.milenfan.basic.test; public class AppleGardener implements FriutGardener{ public Friut factory(){ return new Apple(); } }
package cai.milenfan.basic.test; public class GrapeGardener implements FriutGardener{ public Friut factory() { return new Grape(); } }
package cai.milenfan.basic.test; public class StrawberryGardener implements FriutGardener{ public Friut factory() { return new Strawberry(); } }
package cai.milenfan.basic.test; public class TestFarm { public static void main(String[] args){ FriutGardener appleGardener = new AppleGardener(); Friut apple = appleGardener.factory(); apple.setFriutName("Apple"); apple.grow(); FriutGardener strawberryGardener = new StrawberryGardener(); Friut strawberry = strawberryGardener.factory(); strawberry.setFriutName("Strawberry"); strawberry.grow(); } }
抽象工厂角色和抽象产品角色都可以选择由java接口或者java抽象类来实现.
三:Java语言中工厂方法模式的例子
A:聚集中的应用
多个对象聚在一起形成的总体称之为聚集,聚集对象是能够包容一组对象的容器对象。所有的Java聚集都实现了java.util.Collection接口,这个接口规定所胡的java聚集必须提供一个iterator方法,返回一个Iterator类型的对象,一个个体的Java聚集对象会通过这个iterator方法返回一个具体的Iterator类,可以看出,这个iterator方法就是一个工厂方法.
B:URL和URLConnection
URL对象提供一个openConnection的工厂方法返回一个URLConnection类型的对象,由于URLConnection是一个抽象类,因此返回的不可能是这个抽象类的实例,而必然是其具体子类的实例,这就应用了工厂方法。 。
四:工厂方法模式与其他模式的关系
A:模板方法模式
工厂方法模式和模板方法模式常常一起使用,工厂方法模式将创建工作推迟到子类,模板方法将剩余逻辑交给子类。
.........
发表评论
-
Mina重连
2014-05-26 21:29 2864import com.sun.swing.internal. ... -
面试经典
2014-05-24 09:29 6081.mysql innodb引擎,什么叫聚集索引,与非聚集索 ... -
一拍网网站系统架构图
2014-03-28 21:24 539一拍网网站系统架构图 -
Window下安装配置nginx
2013-08-12 16:53 736安装:http://www.cnblogs.com/wen ... -
使用线程池的好处
2013-07-18 14:41 1142使用线程池有两个好处: 1.可以创建和销毁线程所带来的系统 ... -
Java ThreadLocal使用浅析
2013-07-18 14:36 414ThreadLocal通过在其内部保存变量的副本,并且各个副本 ... -
MyBatis学习之简单增删改查操作、MyBatis存储过程、MyBatis分页、MyBatis一对一、MyBatis一对多
2013-07-05 13:06 1091http://blog.csdn.net/zhangwei ... -
分享一位网友的架构杂谈
2013-05-20 23:16 873不容类型的网站,并发处理不一样,例如针对sns这种类型的网站 ... -
JSP页面静态化
2013-04-08 09:20 805http://www.java-zone.org/644.ht ... -
Java compile to C++
2013-03-19 14:53 464http://code.google.com/a/eclips ... -
几个TCP Socket的通信框架
2013-03-19 12:26 946http://www.oschina.net/p/simple ... -
宝贝鱼
2013-03-18 23:54 637http://code.google.com/p/cshbbr ... -
将Java程序注册成系统服务(NT服务)
2013-03-16 16:14 571http://blog.csdn.net/small____f ... -
Java内存回收机制
2013-03-13 15:47 781http://www.iteye.com/blogs/tag/ ... -
支付宝,百付宝集成
2013-03-13 14:01 898http://help.alipay.com/support/ ... -
SSH+EXTJS项目下载
2013-03-11 23:02 387http://download.csdn.net/tag/Ex ... -
Hibernate中使用Threadlocal创建线程安全的Session
2013-03-04 20:39 490http://blog.sina.com.cn/s/blog_ ... -
Java Socket多线程通信
2012-10-09 09:53 811当Server没接受到一个Client连接请求之后,都把处理流 ... -
Java 多线程的一个例子
2012-10-09 09:48 984目录: 1 synchronized的 ... -
app引擎
2012-07-10 09:39 0http://sae.sina.com.cn/ htt ...
相关推荐
第二讲:工厂方法模式 第三讲:抽象工厂模式 第四讲:工厂模式在开发中的运用 第五讲:单例模式 第六讲:原型模式 第七讲:建造者模式 第八讲:装饰模式 第九讲:策略模式 第十讲:观察者模式 第十一讲:享...
软件体系结构与设计模式第十二章工厂方法模式.pptx
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:...
工厂方法模式( Factory Method ) 抽象工厂模式( Abstract Factory ) 单例模式( Singleton ) 建造者模式( Builder ) 原型模式( Prototype ) 结构型模式包含了: 适配器模式( Adapter ) 装饰器模式( ...
软件体系结构与设计模式 第十二章 工厂方法模式.pptx
二十三种设计模式Java版之工厂模式 工厂模式博文地址:https://blog.csdn.net/program_highway/article/details/124561033
设计模式 C# 简单工厂模式,又叫做静态工厂方法模式,这是一个很简单的模式,它不属于GOF二十三个基本模式之中的一个,但它是一个很有用的模式,有用得着的时候可以使用它。
工厂方法模式( Factory Method ) 抽象工厂模式( Abstract Factory ) 单例模式( Singleton ) 建造者模式( Builder ) 原型模式( Prototype ) 结构型模式包含了: 适配器模式( Adapter ) 装饰器模式( ...
工厂方法模式( Factory Method ) 抽象工厂模式( Abstract Factory ) 单例模式( Singleton ) 建造者模式( Builder ) 原型模式( Prototype ) 结构型模式包含了: 适配器模式( Adapter ) 装饰器模式( ...
工厂方法模式( Factory Method ) 抽象工厂模式( Abstract Factory ) 单例模式( Singleton ) 建造者模式( Builder ) 原型模式( Prototype ) 结构型模式包含了: 适配器模式( Adapter ) 装饰器模式( ...
01第一讲简单工厂模式 02第二讲工厂方法模式 03第三讲抽象工厂模式 04第四讲工厂模式在开发中的运用 05第五讲单例模式 06第六讲原型模式 07第七讲建造者模式 08第八讲装饰模式 09第九讲策略模式 10第十讲观察者模式 ...
第三节 工厂方法模式 第四节 抽象工厂模式 第五节 单例模式 第六节 外观模式 第七节 模板模式 第八节 组合模式 第九节 代理模式 第十节 命令模式 第十一节 观察者模式 第十二节 策略模式 第十三节 建造者模式 第十四...
工厂方法模式( Factory Method ) 抽象工厂模式( Abstract Factory ) 单例模式( Singleton ) 建造者模式( Builder ) 原型模式( Prototype ) 结构型模式包含了: 适配器模式( Adapter ) 装饰器模式( ...
工厂方法模式( Factory Method ) 抽象工厂模式( Abstract Factory ) 单例模式( Singleton ) 建造者模式( Builder ) 原型模式( Prototype ) 结构型模式包含了: 适配器模式( Adapter ) 装饰器模式( ...
工厂方法模式( Factory Method ) 抽象工厂模式( Abstract Factory ) 单例模式( Singleton ) 建造者模式( Builder ) 原型模式( Prototype ) 结构型模式包含了: 适配器模式( Adapter ) 装饰器模式( ...
工厂方法模式( Factory Method ) 抽象工厂模式( Abstract Factory ) 单例模式( Singleton ) 建造者模式( Builder ) 原型模式( Prototype ) 结构型模式包含了: 适配器模式( Adapter ) 装饰器模式( ...
工厂方法模式( Factory Method ) 抽象工厂模式( Abstract Factory ) 单例模式( Singleton ) 建造者模式( Builder ) 原型模式( Prototype ) 结构型模式包含了: 适配器模式( Adapter ) 装饰器模式( ...
工厂方法模式( Factory Method ) 抽象工厂模式( Abstract Factory ) 单例模式( Singleton ) 建造者模式( Builder ) 原型模式( Prototype ) 结构型模式包含了: 适配器模式( Adapter ) 装饰器模式( ...
工厂方法模式( Factory Method ) 抽象工厂模式( Abstract Factory ) 单例模式( Singleton ) 建造者模式( Builder ) 原型模式( Prototype ) 结构型模式包含了: 适配器模式( Adapter ) 装饰器模式( ...
工厂方法模式( Factory Method ) 抽象工厂模式( Abstract Factory ) 单例模式( Singleton ) 建造者模式( Builder ) 原型模式( Prototype ) 结构型模式包含了: 适配器模式( Adapter ) 装饰器模式( ...