我有一组PageRenderer抽象类的子类,例如
ImagePageRenderer
TextPageRenderer
VideoPageRenderer.
所以为了获取PageRenderer实例,工厂方法是合适的。concreate工厂长这样:
public class PageRendererFactory extends AbstractFactory {
PageRenderer createPageRenderer(Type type) {
//implementation
}
}//Code AbstractFactory is skipped here
但是,问题在于PageRenderer包含几个实例变量供子类使用:
public abstract class PageRenderer {
protected A a;
protected B b;
protected C c;
protected D d;
Protected E e;
//there might be even more instance variables
}
并且所有子类PageRenderer共享这些实例变量。
根据上述条件,我将更改PageRendererFactory它以使其包含提到的实例变量:
public class PageRendererFactory extends AbstractFactory {
private A a;
private B b;
private C c;
private D d;
Private E e;
//there might be even more instance variables here
PageRenderer createPageRenderer(Type type) {
//use the instance variables to instantiate the subclass of PageRenderer according to the Type
}
}//Code AbstractFactory is skipped here
问题:在这种情况下,我可能需要设置器PageRendererFactory,但是这个工厂似乎与构建器模式混合在一起!那么这是一个好的解决方案吗?或者这个解决方案有更好的选择吗?
catspeake
有只小跳蛙
随时随地看视频慕课网APP
相关分类