代码之家  ›  专栏  ›  技术社区  ›  Rohan West

抽象现有对象的设计模式

  •  0
  • Rohan West  · 技术社区  · 16 年前

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

    编辑: 抽象的目的将允许我在应用程序中使用itreenodapter,而不了解treenode,在稍后的阶段,我可以实现不同的itreenodapter,应用程序仍然可以工作。我基本上想消除对树烯酮的依赖。

    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);
            }
        }
    }
    

    我在扩展类以接受子节点方面遇到问题…我上面用的方法感觉不太好。知道我该怎么改进吗?

    2 回复  |  直到 16 年前
        1
  •  1
  •   call me Steve    16 年前

    你可以用 Abstract factory pattern .

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

        2
  •  0
  •   tster    16 年前
    1. 将接口名称更改为itreenode或类似的名称。您正在用接口创建一个抽象。适配器需要一个实现,使它看起来像一个期望的抽象。

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

    推荐文章