你们回顾的是:。 申请代码(向图书馆打电话的代码)在某个时候需要通过一个工厂级,供图书馆用来制造亚类物体。 在你的情况下,工厂班级将产生B级的情况。
视班级的设计和功能而定,该班级很可能是这样。 应重新设计一个接口,或至少作为一个抽象的类别,作为这一重构的一部分。
EDIT:
Here s an untested pseudo example:
www.un.org/Depts/DGACM/index_spanish.htm 该守则将载于图书馆。
class INeedAFactory {
public Interface MyFactory {
public ClassA makeClassAInstance();
}
private MyFactory m_factory;
public registerFactory(MyFactory factory) {
m_factory = factory;
}
private ClassA makeClassAInstance() {
// m_factory had better not be null!
return m_factory.makeClassAInstance();
}
private void ClassAConsumer() {
ClassA classA = makeClassAInstance();
// ... etc. ...
}
}
www.un.org/Depts/DGACM/index_spanish.htm 该法典将适用:。
class LibraryPatron {
class MakeClassB implements INeedAFactory.MyFactory {
public ClassA makeClassAInstance() {
return new ClassB();
}
}
public LibraryPatron() {
INeedAFactory libraryObject = new INeedAFactory();
libraryObject.registerFactory(new MakeClassB());
// ... etc...
}
}