我知道我们在编程中所做的一切都可以描述为设计模式(甚至抽象方法也有设计模式称为模板方法)
public class Guicer extends AbstractModule {
private static Injector injector = Guice.createInjector(new Guicer());
public static void setInjector(Injector injector) {
Guicer.injector = injector;
}
public static <T> T getInstance(Class<T> c) {
return injector.getInstance(c);
}
@Override
protected void configure() {
}
}
此代码中使用了哪些设计模式?我喜欢称之为GuiceStateHolder类,但我不确定。
答案 0 :(得分:2)
是的我同意这不是任何模式的规范示例,但我看到依赖注入的元素(显然,它使用的是Guice)和工厂方法(getInstance()
)。
答案 1 :(得分:1)
此代码段不代表catalog的设计模式。 模式(Singleton除外)通常表示比设置某个可更改的默认实现更复杂的关系。
答案 2 :(得分:1)
好吧,我会这么说:
private static Injector injector = Guice.createInjector(new Guicer());
public static void setInjector(Injector injector) {
Guicer.injector = injector;
}
只写全局变量。
在这里:
public static <T> T getInstance(Class<T> c) {
return injector.getInstance(c);
}
用全局函数替换实例方法。所以你基本上有一个全局变量,任何人都可以写,但你只能调用它上面的一个方法。由于喷射器在其界面中有更多,它可能是某种受限制的外立面。
但是它们比模式更具有成语 - 一种模式也可以描述它在期望的行为方面试图实现的目标,而成语就是你如何在代码中做某事。
除非它是一种与单一成语有很强连接的模式,否则无法从代码中反向设计模式。