在Java中使用工厂设计模式

时间:2018-07-04 18:52:33

标签: java design-patterns factory-pattern

我希望在Java项目中使用设计模式,对我来说,工厂模式似乎最合适,因为它不太复杂,我在我的项目中找到了实现它的合适方案。

在这种情况下,我可以通过3个类来实现接口。我从tutorialspoint

了解了如何在Java中实现工厂模式。

但是限制我的唯一问题是方法的名称与教程中的名称不同。有什么方法可以在这种情况下应用工厂设计模式吗?

1 个答案:

答案 0 :(得分:3)

如果您使用的是Spring,则有更好的方法来实现。虽然不能称为工厂模式。您可以为每个实现创建@Bean,并在需要时使用特定的实现。或者,您可以根据场景使用唯一的限定符名称为@ Service,@ Component,@ Repository注释每个实现类,并使用@Qualifier(“ qualifier”)注释@Autowired它们。例如:

interface MyInterface {
    // method signature
}

@Component("myClass1")
class MyClass1 implements  MyInterface{
    // code
}

@Component("myClass2")
class MyClass2 implements  MyInterface{
    // code
}

public class Main{
    @Autowired
    @Qualifier("myClass1")
    MyInterface myClass1;

    @Autowired 
    @Qualifier("myClass2")
    MyInterface myClass2;

    public static void main(){
        myClass2.func1();
        myClass1.func2();
    }
}

如果您不想使用Spring依赖注入,可以这样做

interface MyInterface {
   public void invoke();
}

class MyClass1 implements  MyInterface{
    public void myMethod(){
    }
    public void invoke(){
       myMethod();
    }
}

class MyClass12 implements  MyInterface{
    public void someDifferentName(){
    }
    public void invoke(){
        someDifferentName();
    }
}

立即调用invoke()方法。