简体   繁体   English

没有抽象方法的工厂方法模式是否可能?

[英]Is Factory Method pattern without abstract methods possible?

假设有一个没有抽象方法的Java程序,是否可以在没有抽象方法的情况下实现Factory Method模式?

Absolutely: a factory method does not need to be an abstract one - it could be a non-abstract method with a default implementation throwing an exception, or it could be a method of an interface, which is always abstract. 绝对: 工厂方法不必是抽象方法-它可以是具有默认实现并抛出异常的非抽象方法,也可以是接口的方法,该方法始终是抽象的。

interface Product {
    void doSomething();
}
interface Creator {
     Product create(String someData);
}
class ProductX implements Product {
    public void doSomething() {
         System.out.println("X");
    }
}
class ProductY implements Product {
    public void doSomething() {
         System.out.println("y");
    }
}
class XYFactory implements Creator {
    public Product create(String someData) {
        if ("X".equals(someData)) {
            return new ProductX();
        }
        if ("Y".equals(someData)) {
            return new ProductY();
        }
        return null;
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM