作者sbrhsieh (sbr)
看板java
标题Re: [问题] 有关inner class的概念
时间Sat Jan 10 16:29:34 2009
※ 引述《LeoSW (易─雪)》之铭言:
: 严格来说我要做的功能应该比较像是Composite Pattern而不是Strategy Pattern
: 大概把我的架构做个说明:
: 有一个SuperClass(写好的 不能改)
: 以及很多已经有的(写好的可以改 但是希望不要改太多)
: SubClassA extends SuperClass
: SubClassB extends SuperClass
: SubClassC extends SuperClass
: 现在想要的是说
: 每一种SubClass各有一个Object
: 然後对每一个SubClass的Object依序做同一件事情
: 如果今天没有 最後只能有一个Class的限制的话
: 那很直觉的作法就是:
: class NewSubClass extends SuperClass{
: void NewMethod(){
: SuperClass[] list = new SuperClass[number];
: /*for each list[i] = new SubClassX();*/
: for(int i=0;i<list.length;i++){
: list[i].method();
: }
: }
: }
: 可是这样就会有很多个Class
: 而不是环境限制的只可以有一个Class
: 当然你的方法也是可以做到同样的效果
: 只是当要对所有的class做同一件事情时
: 就得写成一长串了
: 不晓得这样子有没有其他的办法呢?
不以回圈的方式来一一 invoke SubClassX 的特定 method,改成 hard code 对多个
object 的操作,这部分是可以使用程式来帮你产生程式码。(许多韧体程式会把要
display 的点阵图 pixel data 写在程式码里,为什麽就不麻烦?)
如果考虑到把多个 SubClassX 合并成单一个 NewSubClass 之後,因为每个
SubClassX 的 field/method 被改名是有规则的,那麽上面使用回圈的作法就可以
改成利用 reflection 机制来做,不需要一一 hard code 每一个 method
invocation statement。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.173.136.165
1F:推 LeoSW:嗯我知道你的意思 所以也想说大概会这样做 01/10 20:48
2F:→ LeoSW:谢谢你的回应 :) 01/10 20:49