Adapter pattern適用於這種類型的情況,雖然在您的用例可能不完全是你在之後。但這是一種值得了解的模式,可能會引導您朝着正確的方向前進。
意向
將一個類的接口轉換成另一個接口的客戶期望。適配器讓類可以協同工作,否則就不能因爲不可兼容的接口。
例
所以考慮目標接口,即一個你希望編程到:
public interface IMyBasicBolt {
void prepare(Map<String, Object> stormConf, String other);
}
(注:我已經取代TopologyContext
與String
爲簡單起見)
你然後可以創建一個適配器類來實現您的目標接口並將行爲(組合)委託給IBoltBasic
的實現。
public class BasicBoltAdapter implements IMyBasicBolt {
private IBasicBolt basicBolt;
public BasicBoltAdapter(IBasicBolt basicBolt) {
this.basicBolt = basicBolt;
}
@Override
public void prepare(Map<String, Object> stormConf, String other) {
basicBolt.prepare(stormConf, other);
}
}
示例使用適配器BasicBoltAdapter
的:
IBasicBolt basicBolt = new IBasicBolt() {
@Override
public void prepare(Map stormConf, String other) {
System.out.println(stormConf.toString() + " " + other);
}
};
Map<String, Object> map = new HashMap<>();
map.put("MapKeyTest", new Object());
IMyBasicBolt myBasicBolt = new BasicBoltAdapter(basicBolt);
myBasicBolt.prepare(map, "Test");
沒有嚴格的你的情況需要接口IMyBasicBolt
(目標接口)。但是,如果可能的話,編程到接口通常是很好的。