首页产品库评测行情新闻|手机数码笔记本台式机DIY硬件数字家庭数码相机办公外设|软件下载游戏开发|社区

更多

数码相机
MP4
LCD
机箱
音箱

天极网 > 开发频道>爪哇语言工厂方法创立性模式介绍

爪哇语言工厂方法创立性模式介绍

2001-11-28 11:28作者:阎宏 出处:yesky责任编辑:方舟


  问答题

  第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 Bean)。这只夹子就表示这个类是一只豆。
一个企业爪哇豆,或 EJB (Enterprise JavaBean) 的类图左上角也会有一只夹子,夹子上面有一个E字以示与普通的爪哇豆的不同(请见下图)。


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

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

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

  第3题、在面向对象的编程,特别是爪哇语言的编程中,接口常常用来标志一种身份(identity)。 VeggieIF 和 PlantIF 接口代表两种不同的身份。VeggieIF 表明 Broccoli 类属于蔬菜类等级, PlantIF 接口表明 Broccoli 类属于工厂的产品类。

   因此,虽然把两个接口合并起来可能在功能上是行得通的,在原则上是不应鼓励这样做的。

  第4题、在工厂方法模式中,产品(Product)可以永远是抽象类。但在一些情形下可仪简化为接口。

   如果所实产品类( Concrete Product) 之间有共同的逻辑,这部分公有的代码就应当转移到产品 (Product) 中去,这样产品就必须是抽象类而不可能是接口。

   反过来,如果所实产品类( Concrete Product) 之间没有任何共同的逻辑,那么产品(Product)就没有任何逻辑代码,它就应当被作为接口,而不是抽象类。但这不是必须的,仅是建议而已。

  第5题、多形性原则 (Polymorphism) 是在对象被创立之后才存在的,因此不能使用多形性来创立对象。factory() 方法必然是非常过程性 (procedural)的。


共11页。 9 7 ... 11

关注此文的读者还看过:

返回开发频道首页

共11页。 上一页67891011

软件频道最新更新

热点推荐

天极服务|关于我们|About us|网站律师|RSS订阅|友情合作|加入我们|天极动态|网站地图|意见反馈|MSN/QQ上看天极
Copyright (C) 1999-2012 Yesky.com, All Rights Reserved 版权所有 天极网络