JiveJdon Community Forums
在线291人   首页   主题表   培训咨询   标签   精华   查搜   注册    登陆 RSS
首页 » 论坛 » 设计模式、框架和架构
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表
???en_US.forumThreadNext.name??? 下一主题
Go 总共有 3 回复 / 1
 发表新帖子   回复该主题贴
gkzhong

悄悄话
发表文章: 7
注册时间: 2006年12月29日 13:00
请教Coolyu0916 在“我来讨论一下纯理论的老问题.长方形和正方形的继承关系” 中引出的一点疑惑 2007年05月12日 17:42 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
标签列表 抽象继承(16)      设计模式(166)     
那么我们就从需求方面走

首先我们确定了人的行为
我们不可能设计一个万能的persion class
我们只要实现有限的功能,在系统中用到的,比如eat() sleep()
现在要在性别上进行区分

下面对这样的需求进行抽象

考虑到男人、女人终究是人所以和人的关系是一个继承关系 is-a,而男人或者女人又具有吃睡这么些行为,所以把这组行为做一个接口

abstract class Person {
abstract void male();
abstract void female();
}

interface Action {
void eat();
void sleep();
}

public class GkZhong extends Person implements Action {
//.......
}


当我们某一业务上面的需要(多态):

public class Service {
private Person persion;
public void setPerson(Person persion){
this.persion = persion;
}

public void fun(){
//persion.eat(); 这里窄化了,persion不可能有eat()的,但当我们set进来的是GkZhong的对象的时候是需要这么个行为的,这时候困惑了
}
}


不知道表述清楚未
[该贴被gkzhong于2007年05月12日 17:45修改过]
[该贴被gkzhong于2007年05月12日 17:45修改过]
togoever

悄悄话
发表文章: 8
注册时间: 2007年09月11日 13:39
回复:请教Coolyu0916 在“我来讨论一下纯理论的老问题.长方形和正方形的继承关系” 中引出的一点疑惑 2007年10月01日 13:53 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
http://www.jdon.com/jivejdon/thread/32771.html
rainerWJY

悄悄话
发表文章: 18
注册时间: 2007年05月12日 23:16
re:请教Coolyu0916 在“我来讨论一下纯理论的老问题.长方形和正方形的继承关系” 中引出的一点疑惑 2007年10月01日 22:20 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
person是不是共有eat这个行为?为什么不放在person中?

rainerWJY

悄悄话
发表文章: 18
注册时间: 2007年05月12日 23:16
re:请教Coolyu0916 在“我来讨论一下纯理论的老问题.长方形和正方形的继承关系” 中引出的一点疑惑 2007年10月01日 22:29 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
如果你非要在内部设计一个接口,那么这个接口利用strategy模式来设计
那么person应该有一个更扩大话的接口,比如action()方法,person这个类引用Action抽象接口,可以利用setter方法或者IOC来指定Action子类具体是什么。在Person.action()方法中使用Action.eat()方法。
就能满足你上述的要求了。

从抽象上来说也是合理的,不过stragety模式一般都不是用在这里的。除非碰到用like-a实在解决不了的问题的时候才会考虑到用策略模式吧~

仅供参考~
这个主题有 3 回复 / 1Go
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表    返回页首返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache 缓存 DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Seam Spring Struts
正在读取,请等待...
google yahoo 新浪ViVi 365Key网摘 天极网摘 CSDN网摘 添加到百度搜藏 POCO网摘 博采网摘
查询本论坛内 回复超过的热门帖子
     回复该主题贴
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
  每2分种自动备份发贴内容Ctrl-V粘贴取出,提问题前先查询标签列表

RSS 手机阅读 add to google add to yahoo
解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-08 jdon.com

anti spam