快速业务通道

Java语言工厂方法创立性模式介绍 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
)技术架构是怎样使用工厂方法模式的。

Java语言工厂方法创立性模式介绍 - 编程入门网

图8. 在JMS技术架构中, 工厂方法模式无处不在

在上面的序列图中,用户端创立一个新的 Context 对象,以便利用 JNDI 伺服器寻找 Topic 和 ConnectionFactory 对象。在得到这个 ConnectionFactory 对象后, 就可以利用 Connection 创立 Session 的实例。有了 Session 的实例后,就可以利用 Session 创立 TopicPublisher的实例,并利用Session创立消息实例。

Properties prop = new Properties(); prop.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory"); prop.put(Context.PROVIDER_URL, "file:C:\temp"); // 取到 JNDI context Context ctx = new InitialContext(prop); // 利用ctx 索取工厂类的实例 Topic topic = (Topic) ctx.lookup("myTopic"); TopicConnectionFactory tcf = (TopicConnectionFactory) ctx.lookup("myTCF"); // 利用工厂类创立Connection,这是典型的工厂模式 TopicConnection tCon = tcf.createTopicConnectoin(); // 利用Connection创立Session的实例,又是工厂模式 TopicSession tSess = tCon.createTopicSession(false, Session.AUTO_ACKNOWLEDGE); // 利用Session创立Producer的实例,又是工厂模式 TopicPublisher publisher = tSess.createPublisher(topic); // 利用Session创立消息实例,又是工厂模式 TextMesage msg = tSess.createTextMessage("Hello from Jeff"); //发送消息 publisher.publish(msg);

代码清单8. JMS架构中,工厂模式被用于创立 Connection, Session, Producer 的实例。

Java语言工厂方法创立性模式介绍(7)

时间:2010-12-17

问答题

第1题、在这一节和上一节的类图中,我注意到Apple类的类图与Strawberry类的类图有一点点不同。在Apple类的类图左上角有一个夹子样的标识。请问这个标识代表什么意思。

第2题、在这一节的类图4中,我注意到 ConcreteProduct 类只出现一次,但实现 Product 接口的类实际上可以有很多。这是否可以用在联接 Product 和 ConcreteProduct 之间的线旁注上 1,2,... 表示呢? 记得我在UML图中曾见过这种记号。

第3题、请问在本节的小花果园系统的源代码清单4里,Broccoli 类实现两个接口,VeggieIF 和 PlantIF。只有 PlantIF 才与工厂模式有关。为什么不把 VeggieIF 接口合并到 PlantIF 接口中去?

第4题、请问在工厂方法模式中,产品(Product) 何时应是抽象类,何时应是接口?

第5题、请问在工厂方法 (factory())中,为什么要使用 if 语句作过程性判断来决定创立哪一个产品类,而不使用多形性原则 (Polymorphsm) 来创立产品类?

问答题答案

第1题、Apple类有性质(property),而Strawberry类没有性质。

一个类的成员变量叫做属性(attribute)。性质与属性的区别在于性质是带着一套取值丶赋值方法的属性。一个类有了属性,其类图左上角就会有一只夹子。有些人认为,一个Java类有了属性才能被称做Java豆(Java Bean)。这只夹子就表示这个类是一只豆。

一个企业Java豆,或 EJB (Enterprise JavaBean) 的类图左上角也会有一只夹子,夹子上面有一个E字以示与普通的Java豆的不同(请见下图)。

Java语言工厂方法创立性模式介绍 - 编程入门网

第2题、不能。在图4中联接 Product 和 ConcreteProduct 之间的线有两条,一条表示两者之间的推广关系 (即有向上箭头的),另一条表示两者之间的关联关系(即有向下箭头的)。在推广关系线旁写数字没有意义。在关联关系线旁写数字是有意义的,类旁的数字可以表明类的实例的数目。

原来的问题是关于类的数目而不是类的实例的数目,因此是错的。

没有任何必要用数字标明这一点,而且UML也不提供这种标记。

第3题、在面向对象的编程,特别是Java语言的

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号