abstractでOverrideのメソッドが、わっさ~と出るのが嫌な時は、
処理用のabstractメソッドが実装されたオブジェクトを使用すればOK?
class Test{
// コンストラクタ
public Test(){
Sub sub = new Sub();
// 処理用オブジェクトをadd
sub.addSubAction(new SubAction(){
@Override
public void action(){
System.out.println("test");
}
});
// 処理用オブジェクトに設定した処理を実行
sub.doAction();
}
// abstractを実装する代わりにオブジェクトをセットして処理を実装するクラス
class Sub{
// コンストラクタ
public Sub(){};
// 処理用オブジェクト
private List<SubAction> subActionList;
// 処理用オブジェクトの追加
public void addSubAction(SubAction subAction){
if(subActionList == null){
subActionList = new ArrayList<SubAction>();
}
subActionList.add(subAction);
}
// 処理用オブジェクトに設定された処理を実行
public void doAction(){
if(subActionList == null){
return;
}
for(SubAction subAction : subActionList){
if(subAction != null){
subAction.action();
}
}
}
}
// 処理用インタフェース
[[interface]] SubAction{
void action();
}
}
最終更新:2012年12月22日 01:26