繁体   English   中英

这是什么设计模式?

[英]What Design Pattern is this?

我知道我们在编程中所做的一切都可以描述为设计模式(甚至抽象方法都有设计模式,称为模板方法)


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类,但我不确定。

是的我同意这不是任何模式的规范示例,但我看到依赖注入的元素(显然,它使用的是Guice)和工厂方法( getInstance() )。

此代码段不代表目录中的设计模式。 模式(Singleton除外)通常表示比设置某个可更改的默认实现更复杂的关系。

好吧,我会这样说:

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);
}

用全局函数替换实例方法。 所以你基本上有一个全局变量,任何人都可以写,但你只能调用它上面的一个方法。 由于喷射器在其界面中有更多,它可能是某种受限制的外立面。

但它们比模式更具有成语 - 一种模式也可以描述它在期望行为方面所要实现的目标,而成语就是你如何在代码中做某事。

除非它是一种与单个习语有很强连接的模式,否则不可能从代码中反向设计模式。

暂无
暂无

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

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