这仍然是适配器模式吗?

时间:2010-08-04 11:33:38

标签: c# design-patterns naming-conventions naming adapter

我偶然发现了这个课程,并想知道XYZAdapter是否是正确的名称。我知道适配器模式是如何工作的,但是这个解决方案有点不同:我没有实现DataTable接口并映射适当的方法调用,而是通过复制值并公开这个对象来创建一个新的DataTable对象。那是它的样子:

class Adapter
{
    private NodeList list;
    DataTable table { get { return CreateTable(); } }

    Adapter(NodeList nl)
    {
        list = nl;
    }

    private DataTable CreateTable()
    {
        // Fetch Data in NodeList, create a Table and return it
        // needs to be splitted in smaller methods ;D
    }
}

通常我这样做,但DataTable接口是巨大的:

class Adapter : DataTable
{
    private NodeList list;
    DataTable table { get { return CreateTable(); } }

    Adapter(NodeList nl)
    {
        list = nl;
    }
    // Here are all the DataTable methods mapped to NodeList
}

提前致谢!

1 个答案:

答案 0 :(得分:4)

适配器会将不合规的接口调整为合规接口。例如它转换/包裹一个圆形挂钩,形成一个方形挂钩,使其适合方形槽。

您的解决方案在技术上不是适配器模式 - 它更像是翻译器或转换器。关键的区别在于您的适配器无法替换为期望DataTable实例的方法。