2009-11-25 55 views
0

我想创建现有对象的抽象表示。对于这个例子,我想包装一个System.Windows.Forms.TreeNode的功能。我开始通过如下创建适配器...抽象现有对象的设计模式

编辑:抽象的目的,将允许我使用ITreeNodeAdapter在我的应用程序在不知道树节点,在后一阶段,我可以实现不同的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); 
     } 
    } 
} 

我有扩展类接受子节点的问题...我上面使用的方法不觉得很好。任何想法我可以改善?

+0

你能否提供关于课程目的的更多细节?您想做什么? – CesarGon 2009-11-25 07:16:07

+0

这个班打算有什么目的? – 2009-11-25 07:16:26

回答

0
  1. 更改您的接口名称为ITreeNode或类似的东西。您正在使用界面创建抽象。一个适配器是一种实现方式,并使其看起来像一个想要的抽象

  2. 你在添加孩子有问题吗?将方法添加到您定义的ITreeNode接口,然后在适配器中实现它。

+0

你有可能提供一个例子吗? – 2009-11-25 08:45:00