小编MSD*_*MSD的帖子

Ninject,"抽象工厂"模式和运行时条件解析

介绍

我一直在阅读Ninject文档,我到达了有关工厂的部分(请查看http://www.ninject.org/wiki.htmlhttp://www.planetgeek.ch/2011/12/31/ ninject-extensions-factory-introduction /).那里引用了抽象工厂模式(维基百科).

我一直发现维基百科文章中描述模式的方式与Ninject示例之间存在差异.我也搜索了SO并阅读了与该主题相关的一些答案,我仍然观察到与维基百科中描述的相似的相似之处.

细节

在维基百科

类图 你可以注意到:

  • 多种实现*混凝土厂*抽象工厂.
  • 多个实现*Concrete Product*抽象产品.
  • 每个具体的工厂产生的混凝土产品.在图中,WinFactory生成WinButton,OSXFactory生成OSXButton
  • 如果我要编写一个在运行时有条件地确定类型的程序,很明显我会有一个共同抽象的多个实现(在图中,Button接口的多个实现)
  • 如果我要使用抽象工厂模式来实现这一点,那么根据维基百科的文章,我推断至少有一种方式_ 文章没有显示另一种方式来做到这一点 _将有条件地解决到多个实现中的一个因为工厂反过来会给我一个产品多个实现

在Ninject文档中

我们有:

public class Foo
{
    readonly IBarFactory barFactory;

    public Foo(IBarFactory barFactory)
    {
        this.barFactory = barFactory;
    }

    public void Do()
    {
        var bar = this.barFactory.CreateBar(); …
Run Code Online (Sandbox Code Playgroud)

.net oop ninject abstract-factory

6
推荐指数
1
解决办法
1707
查看次数

标签 统计

.net ×1

abstract-factory ×1

ninject ×1

oop ×1