继承 类 的抽象工厂模式
abstract factory pattern with inherit classes
我想实现抽象工厂模式。
我有三个 classes
- 超级class(SC)
- A child class(childA,应继承自sc)
- A child class (childB, 也应继承sc)
到目前为止,我所做的是为 superclass 实现抽象工厂设计模式。我还没有处理继承。我不知道如何用两个 subclasses 来实现这个模式。我需要添加什么?
抽象工厂
public abstract class AbstractFactory {
public abstract SC createNewSC();
}
SCConcreteFactory
public class SCConcreteFactory extends AbstractFactory {
@Override
public SC createNewSC() {
return new SC();
}
}
抽象SC
public abstract class AbstractSC{
public abstract void doStuff();
}
SC
public class SC extends AbstractSC{
@Override
public void doStuff() {
System.out.println("Hello World");
}
}
在这个 post 中解释了一种使用继承创建抽象工厂的非常详细的方法:http://www.oodesign.com/abstract-factory-pattern.html
如果你的 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,萨宾
需要分别为Child和Child实现两个工厂,例如:
public class ChildAFactory extends AbstractFactory {
@Override
public SC createNewSC() {
return new ChildA();
}
}
public class ChildBFactory extends AbstractFactory {
@Override
public SC createNewSC() {
return new ChildB();
}
}
我想实现抽象工厂模式。 我有三个 classes
- 超级class(SC)
- A child class(childA,应继承自sc)
- A child class (childB, 也应继承sc)
到目前为止,我所做的是为 superclass 实现抽象工厂设计模式。我还没有处理继承。我不知道如何用两个 subclasses 来实现这个模式。我需要添加什么?
抽象工厂
public abstract class AbstractFactory {
public abstract SC createNewSC();
}
SCConcreteFactory
public class SCConcreteFactory extends AbstractFactory {
@Override
public SC createNewSC() {
return new SC();
}
}
抽象SC
public abstract class AbstractSC{
public abstract void doStuff();
}
SC
public class SC extends AbstractSC{
@Override
public void doStuff() {
System.out.println("Hello World");
}
}
在这个 post 中解释了一种使用继承创建抽象工厂的非常详细的方法:http://www.oodesign.com/abstract-factory-pattern.html
如果你的 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,萨宾
需要分别为Child和Child实现两个工厂,例如:
public class ChildAFactory extends AbstractFactory {
@Override
public SC createNewSC() {
return new ChildA();
}
}
public class ChildBFactory extends AbstractFactory {
@Override
public SC createNewSC() {
return new ChildB();
}
}