Java 具有继承类的抽象工厂模式
我想实现抽象工厂模式。 我有三节课Java 具有继承类的抽象工厂模式,java,inheritance,abstract-factory,Java,Inheritance,Abstract Factory,我想实现抽象工厂模式。 我有三节课 超类(SC) 子类(childA,应从sc继承) 子类(childB,也应从sc继承) 到目前为止,我所做的是为超类实现抽象工厂设计模式。我还没有继承遗产。我不知道如何用这两个子类实现该模式。我需要补充什么 抽象工厂 水泥厂 摘要 SC 本文介绍了一种创建带有继承的抽象工厂的非常详细的方法: 如果你的SC超类也是抽象的,你可以很容易地做到: public abstract class AbstractFactory { public abstract
本文介绍了一种创建带有继承的抽象工厂的非常详细的方法: 如果你的SC超类也是抽象的,你可以很容易地做到:
public abstract class AbstractFactory {
public abstract SC sc();
}
public class ChildAFactory extends AbstractFactory {
public SC sc(){ return new ChildA();}
}
public class ChildBFactory extends AbstractFactory {
public SC sc(){ return new ChildB();}
}
如上述文章所述:
class FactoryMaker{
private static AbstractFactory pf=null;
static AbstractFactory getFactory(String choice){
if(choice.equals("a")){
pf=new ChildAFactory();
}else if(choice.equals("b")){
pf=new ChildBFactory();
} return pf;
}
}
// Client
public class Client{
public static void main(String args[]){
AbstractFactory pf= FactoryMaker.getFactory("a");
SC sc = pf.sc(); // ChildA is initialized
}
}
有几种方法可以使用抽象工厂,这取决于您的需求。这是一种非常简单的方法,可能会随着您的需求而改变。例如,上面的解决方案只是试图隐藏具体的实现。客户只知道SC
HTH,Sabine您需要分别为ChildA和ChildB实施两个工厂,例如:
public class ChildAFactory extends AbstractFactory {
@Override
public SC createNewSC() {
return new ChildA();
}
}
public class ChildBFactory extends AbstractFactory {
@Override
public SC createNewSC() {
return new ChildB();
}
}
public class SC extends AbstractSC{
@Override
public void doStuff() {
System.out.println("Hello World");
}
}
public abstract class AbstractFactory {
public abstract SC sc();
}
public class ChildAFactory extends AbstractFactory {
public SC sc(){ return new ChildA();}
}
public class ChildBFactory extends AbstractFactory {
public SC sc(){ return new ChildB();}
}
class FactoryMaker{
private static AbstractFactory pf=null;
static AbstractFactory getFactory(String choice){
if(choice.equals("a")){
pf=new ChildAFactory();
}else if(choice.equals("b")){
pf=new ChildBFactory();
} return pf;
}
}
// Client
public class Client{
public static void main(String args[]){
AbstractFactory pf= FactoryMaker.getFactory("a");
SC sc = pf.sc(); // ChildA is initialized
}
}
public class ChildAFactory extends AbstractFactory {
@Override
public SC createNewSC() {
return new ChildA();
}
}
public class ChildBFactory extends AbstractFactory {
@Override
public SC createNewSC() {
return new ChildB();
}
}