我偶然发现了此类,想知道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接口是enormus:

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
}


提前致谢!

最佳答案

适配器将不兼容的接口改编为兼容的接口。例如它转换/包裹一个圆形的钉子以形成一个方形的钉子,使其适合一个方形的槽。

从技术上来说,您的解决方案不是适配器模式-而是转换器或转换器。关键区别在于您的适配器不能在需要DataTable实例的方法中替换。

10-02 06:13
查看更多