我是一个新手的设计模式,这里是我的问题设计模式问题
如果我们有实现它,这个每个类都有不同的属性,一些类的抽象类。
现在我有另一个(管理员类),其中包含抽象类的数组,我想把一个搜索方法在其中...我怎么能做到这一点,而不需要投到具体的类?
我有2个想法:
第一个:添加的接口一个额外的水平,这与接口而不是代码去(即而非浇注混凝土类我将强制转换为一个接口。)实施规则... 但这种方式,当我添加另一个类,我将不得不为它做一个接口,我也将不得不编辑管理器(客户端),这似乎不是很好。
二解决方案: 它看起来有点怪,仍然需要改进,但其主要目的是使经理或其他任何客户端可使用抽象类,不知道是谁扩展它或它的属性的任何东西。
的solutin是folows: 加入将不得不在此改变一个接口,强制执行它来生成其例如字段的完整详细描述每一个新的项的汽车对象将具有返回具有如下因素
散列映射字段:{字段类型,fieldValue方法}
例如
- 模型:{文本, “福特”}
- manifactureDate:{日期,“89年12月1日”}
并且每个对象将有也执行该采取 哈希表这样的方法叫compareFields和比较,它的领域,返回true或错误。
现在这样,我已经解决了许多问题 - 对于贵我将只需要做出一个渲染引擎此HashMap可以显示 任何项目,而不必知道它的类型。 (再次GUI是另一个客户端为抽象类)
- 对于搜索我可以得到包含用户在抽象项搜索表单和循环进入 领域的哈希表,并调用fieldmethod比较
我还是不怎样,我会处理复杂的对象(即有另一个对象及其属性)
我不知道什么样的格局是这样的..这只是一个想法,我想过。
编辑:具体示例
,如果我有一个抽象类项与汽车和公共汽车和水上交通实现它,,每本类都有不同的属性.... 怎么可以不强制转换为汽车或巴士... 真的很抱歉的长期问题,例如流量管理器搜索使用抽象类某一个项目经理
咦?我很困惑。你在用什么语言? – 2009-12-17 17:48:28
无论他使用什么语言。设计模式不关心它们可以在大多数任何语言中实现。 – JonH 2009-12-17 17:50:18
我同意jonH ,,,但任何我可能使用java的方式 – 2009-12-17 17:51:26