代码之家  ›  专栏  ›  技术社区  ›  atamanroman

这仍然是适配器模式吗?

  •  2
  • atamanroman  · 技术社区  · 14 年前

    我偶然发现这门课,想知道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
        }
    }
    

    通常我这样做,但数据表接口非常重要:

    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 回复  |  直到 14 年前
        1
  •  4
  •   Gishu    14 年前

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

    您的解决方案在技术上不是适配器模式——它更像是一个转换器或转换器。关键区别在于,不能在需要DataTable实例的方法中替换适配器。