作者godfat (godfat 真常)
看板java
标题Re: [问题] 强制转型
时间Wed May 27 11:51:45 2009
※ 引述《neigence ()》之铭言:
类似 visitor pattern 吧?
: Object obj;
: while((obj= ois.readObject())!=null){
: SomeOne.doSomething(obj);
^^^^^^^^^^^^^^^^^^^^^^^^^
改成 obj.doSomething(); 决定呼叫哪个 doSomething
并加上以下:
: }
: //----------------------------------------------------------------
: class SomeOne{
: public void doSomething(B b){...}
: public void doSomething(C c){...}
: public void doSomething(D d){...}_
: }
abstract class A{
public abstract void doSomething();
}
class B extends A{
@Override
public void doSomething(){ SomeOne.doSomething(this); }
};
class C extends A{
@Override
public void doSomething(){ SomeOne.doSomething(this); }
};
这边会有重复的动作,应该逃不掉。
概念是把原本要由你来判断的 type 资讯,
改由 dynamic binding, 也就是俗称多型的方式处理。
透过这个方式,再把方向反转一次的话,
连 multi-method 都能勉强模拟..
--
By Gamers, For Gamers - from the past Interplay
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.128.121.87