我偶然发现了这个课程,并想知道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
}
提前致谢!
答案 0 :(得分:4)
适配器会将不合规的接口调整为合规接口。例如它转换/包裹一个圆形挂钩,形成一个方形挂钩,使其适合方形槽。
您的解决方案在技术上不是适配器模式 - 它更像是翻译器或转换器。关键的区别在于您的适配器无法替换为期望DataTable实例的方法。