سؤال

أريد إنشاء تمثيل مجردة لكائن موجود. على هذا المثال ، أريد أن ألف وظيفة 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);
        }
    }
}

أواجه مشاكل في تمديد الفصل لقبول العقد الفرعية ... لا يشعر النهج الذي استخدمته أعلاه. أي فكرة كيف يمكنني تحسين؟

هل كانت مفيدة؟

المحلول

يمكنك استخدام نمط المصنع التجريدي.

في حال كنت تتساءل أنه لا يقتصر على كائن جديد ، يمكنك استخدامه للكائنات الموجودة.

نصائح أخرى

  1. قم بتغيير اسم الواجهة إلى itreenode أو شيء من هذا القبيل. أنت تقوم بإنشاء تجريد مع الواجهة. المحول هو ما يأخذ تطبيق واحد ويجعله يبدو وكأنه تجريد مرغوب

  2. أين تواجه مشاكل في إضافة الأطفال؟ أضف طريقة إلى واجهة itreenode التي حددتها ثم تنفيذها في المحول.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top