0

我想创建现有对象的抽象表示。对于这个例子,我想包装 System.Windows.Forms.TreeNode 的功能。我首先创建了一个适配器,如下所示......

编辑:抽象的目的将允许我在我的应用程序中使用 ITreeNodeAdapter 而无需了解 TreeNode,在稍后阶段我可以实现不同的 ITreeNodeAdapter 并且应用程序仍然可以工作。我基本上想删除对 TreeNode 的依赖。

public interface ITreeNodeAdapter
{
    string Title {get;set;}
    void Add(ITreeNodeAdapter adapter);
}

public class TreeNodeAdapter : ITreeNodeAdapter
{    
    public AbstractTreeNode(TreeNode node)
    {
        this.Node = node;
    }

    private TreeNode Node {get;set;}

    public string Title
    {
        get { return _node.Text; }
        set { _node.Text = value; }
    }

    public void Add(ITreeNodeAdapter adapter)
    {
        // What should i do here?
        var treeNodeAdapter = adapter as TreeNodeAdapter;
        if(treeNodeAdapter != null)
        {
            this.Node.Nodes.Add(treeNodeAdapter.Node);
        }
    }
}

我在扩展类以接受子节点时遇到问题……我上面使用的方法感觉不是很好。知道如何改进吗?

4

2 回答 2

1

您可以使用抽象工厂模式

如果您可能想知道它不限于新对象,您可以将其用于现有对象。

于 2009-11-25T22:49:00.333 回答
0
  1. 将您的接口名称更改为 ITreeNode 或类似名称。您正在使用接口创建抽象。适配器是一种实现并使其看起来像所需抽象的东西

  2. 您在哪里遇到添加孩子的问题?向您定义的 ITreeNode 接口添加一个方法,然后在适配器中实现它。

于 2009-11-25T07:31:34.867 回答