0
正如在許多實施例中所述(例如http://en.wikipedia.org/wiki/Decorator_pattern#Java)抽象裝飾類只具有轉發組件的方法。裝飾模式是否受到尊重?
但對我來說,我需要重寫的方法只是在抽象類(類型皈依):
組件
public interface PagerRepository<T> {
List<T> getPageEntries();
}
混凝土構件
public abstract class ConcretePagerRepository<T> implements PagerRepository<T> {
// @Override ...
}
抽象裝飾者
public abstract class PagerRepositoryConvertionDecorator<T, S>
implements PagerRepository<S> {
protected PagerRepository<T> repo;
public PagerRepositoryConvertionDecorator(PagerRepository<T> repo) {
this.repo = repo;
}
@Override
public List<S> getPageEntries() {
List<T> entities = this.repo.getPageEntries();
List<S> dtos = new ArrayList<S>();
for (T e : entities) {
dtos.add(convert(e));
}
return dtos;
}
protected abstract S convert(T entity);
}
這是一個正確的裝飾模式實施?
如果你生活中可以沒有裝飾,這樣做。 –
AHAH,是的,我知道...這只是好奇... :) – davioooh
是不是'ENTITY'應該是簡單的'T'? –