4.16 优先使用Composition替代继承
public class ContainerWrapper {private Container container;private int count;public ContainerWrapper(Container container){this.container=container;}public boolean add(Object e) {count++;return container.add(e);}public void addAll(Collection<Object> c) {count+=c.size();container.addAll(c);}public int getCount(){return count;}
?
使用Composition可能的问题包括:
1.回调方法问题,Container不能回调ContainerWrapper的方法
2.性能问题,需多创建Wrapper类对象(此问题影响较小)
?
仅在此情况下使用继承:如果每个B的确都是A的子类,那么使用继承
?
在此情况下仍然考虑使用Composition:如果父类的API具有很多缺点,那么可使用Composition提供新的API
?
?
?
?
?
?