কোনও সন্তানের তার পিতামাতার কাছে রেফারেন্স শুরু করার সর্বোত্তম উপায় কী?


35

আমি একটি অবজেক্ট মডেল বিকাশ করছি যার প্রচুর পিতামাতার / শিশুদের প্রচুর ক্লাস রয়েছে। প্রতিটি শিশু অবজেক্টের তার প্যারেন্ট অবজেক্টের একটি রেফারেন্স থাকে। পিতামাতার রেফারেন্সটি সূচনা করার জন্য আমি বেশ কয়েকটি উপায় (এবং চেষ্টা করেছি) সম্পর্কে ভাবতে পারি তবে প্রতিটি পদ্ধতির কাছে আমি গুরুত্বপূর্ণ ত্রুটিগুলি খুঁজে পাই। নীচে বর্ণিত পদ্ধতিগুলি দেওয়া যা কোনটি সেরা ... বা এর থেকে আরও ভাল।

আমি নীচের কোডটি সংকলন করে তা নিশ্চিত করতে যাচ্ছি না তাই দয়া করে কোডটি সিনট্যাক্টিকভাবে সঠিক না হলে আমার উদ্দেশ্যটি দেখার চেষ্টা করুন।

মনে রাখবেন যে আমার কিছু শিশু শ্রেণির নির্মাতারা প্যারামিটারগুলি নেন (পিতামাতা ব্যতীত) যদিও আমি সবসময় কোনও দেখায় না।

  1. কলার পিতামাতাকে সেট করতে এবং একই পিতামাতার সাথে যুক্ত করার জন্য দায়বদ্ধ।

    class Child {
      public Child(Parent parent) {Parent=parent;}
      public Parent Parent {get; private set;}
    }
    class Parent {
      // singleton child
      public Child Child {get; set;}
      //children
      private List<Child> _children = new List<Child>();
      public List<Child> Children { get {return _children;} }
    }
    

    ডাউনসাইড: পিতামাতার সেট করা গ্রাহকের জন্য একটি দ্বি-পদক্ষেপ প্রক্রিয়া।

    var child = new Child(parent);
    parent.Children.Add(child);
    

    ডাউনসাইড: ত্রুটি প্রবণ। কলার বাচ্চাকে আরম্ভ করার জন্য ব্যবহৃত পিতাকে আলাদা পিতামাতার সাথে যুক্ত করতে পারে।

    var child = new Child(parent1);
    parent2.Children.Add(child);
    
  2. পিতামাতারা যাচাই করে যে কলার শিশুটিকে পিতামাতার সাথে যুক্ত করে যার জন্য শুরু হয়েছিল।

    class Child {
      public Child(Parent parent) {Parent = parent;}
      public Parent Parent {get; private set;}
    }
    class Parent {
      // singleton child
      private Child _child;
      public Child Child {
        get {return _child;}
        set {
          if (value.Parent != this) throw new Exception();
          _child=value;
        }
      }
      //children
      private List<Child> _children = new List<Child>();
      public ReadOnlyCollection<Child> Children { get {return _children;} }
      public void AddChild(Child child) {
        if (child.Parent != this) throw new Exception();
        _children.Add(child);
      }
    }
    

    ডাউনসাইড: পিতামাতার সেট করার জন্য কলারের এখনও একটি দ্বি-পদক্ষেপ প্রক্রিয়া রয়েছে।

    ডাউনসাইড: রানটাইম চেকিং - পারফরম্যান্স হ্রাস করে এবং প্রতিটি অ্যাড / সেটারে কোড যুক্ত করে।

  3. সন্তানের পিতামাতার সাথে যুক্ত / নির্ধারিত হওয়ার পরে পিতামাতা সন্তানের পিতামাতার রেফারেন্স (নিজেই) সেট করে। পিতামাতার সেটারটি অভ্যন্তরীণ।

    class Child {
      public Parent Parent {get; internal set;}
    }
    class Parent {
      // singleton child
      private Child _child;
      public Child Child {
        get {return _child;}
        set {
          value.Parent = this;
          _child = value;
        }
      }
      //children
      private List<Child> _children = new List<Child>();
      public ReadOnlyCollection<Child> Children { get {return _children;} }
      public void AddChild(Child child) {
        child.Parent = this;
        _children.Add(child);
      }
    }
    

    ডাউনসাইড: সন্তানের পিতামাতার উল্লেখ ছাড়াই তৈরি করা হয়েছে। কখনও কখনও সূচনা / বৈধকরণের জন্য পিতামাতার প্রয়োজন হয় যার অর্থ শিশুর পিতামাতার সেটারে কিছু সূচনা / বৈধতা অবশ্যই সম্পাদন করা উচিত। কোড জটিল হতে পারে। যদি শিশুটির সর্বদা এর পিতামাতার উল্লেখ থাকে তবে তা বাস্তবায়ন করা এত সহজ হবে would

  4. পিতামাতারা কারখানার অ্যাড পদ্ধতিগুলি প্রকাশ করে যাতে কোনও সন্তানের সর্বদা পিতামাতার উল্লেখ থাকে। শিশু ctor অভ্যন্তরীণ। পিতামাতা সেটার ব্যক্তিগত।

    class Child {
      internal Child(Parent parent, init-params) {Parent = parent;}
      public Parent Parent {get; private set;}
    }
    class Parent {
      // singleton child
      public Child Child {get; private set;}
      public void CreateChild(init-params) {
          var child = new Child(this, init-params);
          Child = value;
      }
      //children
      private List<Child> _children = new List<Child>();
      public ReadOnlyCollection<Child> Children { get {return _children;} }
      public Child AddChild(init-params) {
        var child = new Child(this, init-params);
        _children.Add(child);
        return child;
      }
    }
    

    ডাউনসাইড: আরম্ভের সিনট্যাক্স যেমন ব্যবহার করতে পারে না new Child(){prop = value}। পরিবর্তে করতে হবে:

    var c = parent.AddChild(); 
    c.prop = value;
    

    ডাউনসাইড: অ্যাড-ফ্যাক্টরি পদ্ধতিতে শিশু নির্মাণকারীর পরামিতিগুলি নকল করতে হবে।

    ডাউনসাইড: সিঙ্গলটন সন্তানের জন্য কোনও সম্পত্তি সেটার ব্যবহার করতে পারবেন না। খোঁড়া দেখে মনে হচ্ছে যে মানটি নির্ধারণের জন্য আমার একটি পদ্ধতি প্রয়োজন তবে সম্পত্তি গেটারের মাধ্যমে পাঠ্য অ্যাক্সেস সরবরাহ করে। এটা একতরফা।

  5. শিশু তার নির্মাতার সাথে উল্লেখ করা পিতামাতার সাথে নিজেকে যুক্ত করে। চাইল্ড কোর্ট সর্বজনীন। পিতামাতার কাছ থেকে কোনও পাবলিক অ্যাড অ্যাক্সেস নেই।

    //singleton
    class Child{
      public Child(ParentWithChild parent) {
        Parent = parent;
        Parent.Child = this;
      }
      public ParentWithChild Parent {get; private set;}
    }
    class ParentWithChild {
      public Child Child {get; internal set;}
    }
    
    //children
    class Child {
      public Child(ParentWithChildren parent) {
        Parent = parent;
        Parent._children.Add(this);
      }
      public ParentWithChildren Parent {get; private set;}
    }
    class ParentWithChildren {
      internal List<Child> _children = new List<Child>();
      public ReadOnlyCollection<Child> Children { get {return _children;} }
    }
    

    ডাউনসাইড: সিনট্যাক্স কল করা দুর্দান্ত নয়। সাধারণত কেউ addকেবল এই জাতীয় কোনও বস্তু তৈরির পরিবর্তে পিতামাতার কাছে একটি পদ্ধতি কল করে:

    var parent = new ParentWithChildren();
    new Child(parent); //adds child to parent
    new Child(parent);
    new Child(parent);
    

    এবং কেবল এই জাতীয় কোনও বস্তু তৈরি করার চেয়ে একটি সম্পত্তি সেট করে:

    var parent = new ParentWithChild();
    new Child(parent); // sets parent.Child
    

...

আমি কেবল শিখেছি যে এসই কিছু বিষয়গত প্রশ্নকে অনুমতি দেয় না এবং স্পষ্টতই এটি একটি বিষয়গত প্রশ্ন। তবে, এটি একটি ভাল বিষয়গত প্রশ্ন।


14
সর্বোত্তম অনুশীলন হ'ল বাচ্চাদের তাদের পিতামাতার সম্পর্কে জানা উচিত নয়।
টেলাস্টিন


2
@ টেলাস্টিন আমি সাহায্য করতে পারি না তবে এটি গালে জিহ্বা হিসাবে পড়তে পারি এবং এটি হাসিখুশি। সম্পূর্ণ মৃত রক্তাক্ত সঠিক। স্টিভেন, এই শব্দটি দেখার জন্য "অ্যাসাইক্লিক" কারণ প্রচুর পরিমাণে যদি সম্ভব হয় তবে আপনার গ্রাফকে অ্যাসাইক্লিক কেন তৈরি করা উচিত সে সম্পর্কে প্রচুর সাহিত্য রয়েছে।
জিমি হোফা 15

10
@ টেলাস্টিন আপনার এই মন্তব্যটি প্যারেন্টিং.স্ট্যাকেক্সচেঞ্জে ব্যবহার করার চেষ্টা করা উচিত
ফ্যাবিও মার্কোলিনি

2
হুম। কীভাবে কোনও পোস্ট সরানো যায় তা জানেন না (কোনও পতাকা নিয়ন্ত্রণ দেখতে পাবেন না)। আমি প্রোগ্রামারদের কাছে আবার পোস্ট করেছি যেহেতু কেউ আমাকে বলেছে যে এটি সেখানে।
স্টিভেন ব্রোশার

উত্তর:


19

আমি যে কোনও দৃশ্য থেকে দূরে থাকব যা অগত্যা সন্তানের পিতামাতার সম্পর্কে জানতে হবে।

ইভেন্টের মাধ্যমে সন্তানের কাছ থেকে পিতামাতার কাছে বার্তা প্রেরণের বিভিন্ন উপায় রয়েছে। এইভাবে পিতামাতাকে যুক্ত করার পরে, কেবলমাত্র শিশুটিকে পিতামাতার সম্পর্কে সরাসরি না জেনে বাচ্চাদের কোনও ইভেন্টে নিবন্ধন করতে হয় has সর্বোপরি, সম্ভবত পিতামাতাকে কিছুটা প্রভাবিত করতে সক্ষম হওয়ার জন্য এটি কোনও সন্তানের পিতামাতার সম্পর্কে জানার উদ্দেশ্যমূলক ব্যবহার। ব্যতীত আপনি সন্তানের পিতা বা মাতা কাজ সম্পাদন চাইবেন না, তাই সত্যিই তুমি কি করতে কেবল পিতা বা মাতা যে কিছু ঘটেছে বলতে হয় না। অতএব, আপনাকে যা পরিচালনা করতে হবে তা হ'ল সন্তানের একটি ইভেন্ট, যার মধ্যে পিতামাতার সুবিধা নিতে পারে।

এই ইভেন্টটি অন্যান্য শ্রেণীর জন্য দরকারী হওয়া উচিত এই প্যাটার্নটিও খুব ভাল স্কেল করে। সম্ভবত এটি একটি ওভারকিলের কিছুটা হলেও এটি আপনাকে পরে পায়ে গুলি করা থেকেও বাধা দেয়, যেহেতু এটি আপনার শিশু শ্রেণিতে পিতামাতার ব্যবহার করতে ইচ্ছুক হয়ে ওঠে যা কেবলমাত্র আরও দুটি শ্রেণি দম্পতিদের দম্পত্তি করে। এরপরে এই জাতীয় ক্লাসগুলির রিফ্যাক্টরিং সময় সাপেক্ষ এবং আপনার প্রোগ্রামে সহজেই বাগ তৈরি করতে পারে।

আশা করি এইটি কাজ করবে!


6
" এমন কোনও পরিস্থিতি থেকে দূরে থাকুন যার জন্য সন্তানের পিতামাতার সম্পর্কে জেনে রাখা প্রয়োজন " - কেন? আপনার উত্তরটি অনুমানের উপর নির্ভর করে যে বিজ্ঞপ্তিযুক্ত বস্তু গ্রাফগুলি একটি খারাপ ধারণা। যদিও এটি কখনও কখনও ঘটে থাকে (উদাহরণস্বরূপ যখন নিষ্পাপ রেফ-কাউন্টিংয়ের মাধ্যমে মেমরি পরিচালনা করা হয় - C # তে নয়) তবে এটি সাধারণভাবে খারাপ জিনিস নয়। উল্লেখযোগ্যভাবে, পর্যবেক্ষক প্যাটার্ন (যা প্রায়শই ইভেন্টগুলি প্রেরণের জন্য ব্যবহৃত হয়) পর্যবেক্ষণযোগ্য ( Child) পর্যবেক্ষকদের একটি সেট বজায় রাখতে জড়িত ( Parent), যা পিছনের দিক দিয়ে বিজ্ঞপ্তিটি পুনঃপ্রবর্তন করে (এবং এর নিজস্ব বেশ কয়েকটি ইস্যু প্রবর্তন করে)।
আমন

1
কারণ চক্রীয় নির্ভরতা বলতে আপনার কোডটিকে এমনভাবে কাঠামোবদ্ধ করা হয় যাতে অন্যটি ছাড়া আপনার আর না থাকতে পারে। পিতা-মাতার সন্তানের সম্পর্কের স্বভাব অনুসারে এগুলি পৃথক পৃথক সত্তা হওয়া উচিত অন্যথায় আপনি দুটি শক্তভাবে দম্পতি শ্রেণিভুক্ত ঝুঁকিপূর্ণ হতে পারেন যা সম্ভবত এর নকশায় রাখা সমস্ত যত্নশীল যত্নের জন্য একটি তালিকা সহ একক বিশালাকৃতির শ্রেণি হতে পারে। এক শ্রেণীর বেশ কয়েকটি অন্যের কাছে উল্লেখ রয়েছে এই বিষয়টি বাদে পর্যবেক্ষক প্যাটার্ন কীভাবে পিতা-সন্তানের মতো একই তা আমি দেখতে ব্যর্থ। আমার কাছে পিতামাতা-শিশু হ'ল পিতা-মাতা সন্তানের উপর দৃ depend় নির্ভরশীলতা, তবে বিপরীত নয়।
নীল

আমি রাজী. এক্ষেত্রে পিতা-মাতার সম্পর্কের পরিচালনা করার জন্য ইভেন্টগুলি সর্বোত্তম উপায় way আমি এটি প্রায়শই ব্যবহার করি এবং এটি কোডটি বজায় রাখা খুব সহজ করে তোলে, রেফারেন্সের মাধ্যমে শিশু শ্রেণি পিতামাতার সাথে কী করছে তা চিন্তা করার পরিবর্তে।
শাশ্বত 21

@ নীল: বস্তুর উদাহরণগুলির পারস্পরিক নির্ভরতা অনেকগুলি ডেটা মডেলের একটি প্রাকৃতিক অংশ গঠন করে। একটি গাড়ির যান্ত্রিক সিমুলেশনে, গাড়ির বিভিন্ন অংশকে একে অপরের কাছে বাহিনী সংক্রমণ করতে হবে; সাধারণত সমস্ত উপাদানগুলির মধ্যে চক্রীয় নির্ভরতা থাকার চেয়ে সিমুলেশন ইঞ্জিনটি নিজেকে "প্যারেন্ট" অবজেক্ট হিসাবে বিবেচনা করে গাড়ির সমস্ত অংশের দ্বারা সাধারণত পরিচালনা করা যায় তবে উপাদানগুলি পিতামাতার বাইরে থেকে কোনও উদ্দীপনাকে সাড়া দিতে সক্ষম হলে যদি এই জাতীয় উদ্দীপনা সম্পর্কে পিতামাতার জানার দরকার হয় তবে তাদের পিতামাতাকে জানানোর একটি উপায় প্রয়োজন।
সুপারক্যাট

2
@ নীল: যদি ডোমেনটিতে অযোগ্য অযোগ্য চক্রীয় ডেটা নির্ভরতা সহ কোনও বনজ সামগ্রী অন্তর্ভুক্ত থাকে তবে ডোমেনের যে কোনও মডেলও তা করতে পারে। অনেক ক্ষেত্রে এটি আরও সূচিত করবে যে বনটি একক চায় বা না চায় তা একক দৈত্য বস্তুরূপে আচরণ করবে । সমষ্টিগত প্যাটার্ন একত্রিকৃত রুট নামে একক শ্রেণীর অবজেক্টে বনের জটিলতার কেন্দ্রবিন্দুতে কাজ করে। ডোমেনটির মডেলিংয়ের জটিলতার উপর নির্ভর করে, এই সামগ্রিক মূলটি কিছুটা বড় এবং অযৌক্তিক হতে পারে, তবে যদি জটিলতা অনিবার্য হয় (কিছু ডোমেনের ক্ষেত্রে যেমন হয়) তবে এটি আরও ভাল ...
সুপারক্যাট

10

আমি মনে করি আপনার বিকল্প 3টি সবচেয়ে পরিষ্কার হতে পারে। তুমি লিখেছিলে.

ডাউনসাইড: সন্তানের পিতামাতার উল্লেখ ছাড়াই তৈরি করা হয়েছে।

আমি এটাকে খারাপ দিক হিসাবে দেখছি না। প্রকৃতপক্ষে, আপনার প্রোগ্রামটির নকশাটি শিশুদের অবজেক্টগুলি থেকে উপকৃত হতে পারে যা প্রথমে পিতামাতাকে ছাড়া তৈরি করা যায়। উদাহরণস্বরূপ, এটি শিশুদের বিচ্ছিন্নতার মধ্যে পরীক্ষা করা আরও সহজ করে তুলতে পারে। যদি আপনার মডেলের কোনও ব্যবহারকারী কোনও শিশুকে তার পিতামাতার সাথে যুক্ত করতে ভুলে যায় এবং এমন একটি পদ্ধতিতে কল করে যা আপনার পিতা-মাতার সম্পত্তিটি আপনার শিশু শ্রেণিতে সূচনা করার প্রত্যাশা করে, তবে সে নাল রেফার ব্যতিক্রম পায় - যা আপনি চান ঠিক তা-ই: কোনও ভুলের জন্য প্রাথমিক ক্রাশ sh ব্যবহার সঞ্চয় করুন।

এবং যদি আপনি মনে করেন যে কোনও সন্তানের প্রযুক্তিগত কারণে সকল পরিস্থিতিতে কন্সট্রাক্টরে প্রাথমিককরণের জন্য তার পিতামাতার বৈশিষ্ট্যটির প্রয়োজন হয় তবে ডিফল্ট মান হিসাবে "নাল প্যারেন্ট অবজেক্ট" এর মতো কিছু ব্যবহার করুন (যদিও এতে মাস্কিং ত্রুটির ঝুঁকি রয়েছে)।


যদি কোনও সন্তানের পিতা-মাতা ব্যতীত দরকারী কোনও কাজ না করতে পারে তবে পিতা-মাতা ব্যতীত চাইল্ড অবজেক্ট শুরু করার জন্য এমন একটি SetParentপদ্ধতি থাকা দরকার যা হয় বিদ্যমান সন্তানের পিতামাতাকে পরিবর্তনের পক্ষে সমর্থন করতে হবে (যা করা কঠিন হতে পারে এবং / বা অযৌক্তিক) বা কেবল একবার কলযোগ্য হবে। সমষ্টি হিসাবে যেমন মাইকিং মডেলিং (মাইক ব্রাউন এর পরামর্শ অনুসারে) বাবা-মা ছাড়া সন্তানদের শুরু করার চেয়ে অনেক ভাল হতে পারে।
সুপারক্যাট

যদি কোনও ব্যবহারের ক্ষেত্রে একবারের জন্যও একবার কল করা হয় তবে নকশাকে অবশ্যই সর্বদা এটির জন্য অনুমতি দেওয়া উচিত। তারপরে, সেই ক্ষমতাটিকে বিশেষ পরিস্থিতিতে সীমাবদ্ধ করা সহজ। এর পরে এ জাতীয় ক্ষমতা যুক্ত করা সাধারণত অসম্ভব। সর্বোত্তম সমাধান হ'ল অপশন ৩. সম্ভবত পিতামাতা এবং সন্তানের মধ্যে তৃতীয়, "সম্পর্ক" অবজেক্টের সাথে যা [পিতা-মাতার] ---> [সম্পর্ক (পিতা-মাতার নিজের সন্তানের মালিক)] <--- [শিশু]। এটি [সন্তানের] ---> [সম্পর্ক (সন্তানের পিতা-মাতার মালিকানাধীন)] <--- [পিতামাতার] মতো একাধিক [সম্পর্ক] উদাহরণকেও মঞ্জুরি দেয়।
ডকসালভাজার

3

সাধারণত দুটি একসাথে ব্যবহৃত হয় এমন দুটি শ্রেণীর মধ্যে উচ্চ সংহতি রোধ করার মতো কিছুই নেই (যেমন একটি অর্ডার এবং লাইন আইটেম সাধারণত একে অপরকে রেফারেন্স করবে)। যাইহোক, এই ক্ষেত্রে আমি ডোমেন চালিত ডিজাইনের বিধিগুলি মেনে চলি এবং তাদের পিতামাতার সমষ্টিগত রুট হিসাবে সমষ্টি হিসাবে মডেল করি । এটি আমাদের বলে যে এআর তার সামগ্রীতে সমস্ত বস্তুর আজীবন দায়বদ্ধ।

সুতরাং এটি আপনার দৃশ্যের চারটির মতোই হবে যেখানে পিতামাতারা তার শিশুদের সঠিকভাবে আরম্ভ করার জন্য প্রয়োজনীয় পরামিতি গ্রহণ করে সংগ্রহের সাথে যুক্ত করার জন্য এটি তৈরি করার একটি পদ্ধতি প্রকাশ করে।


1
আমি সমষ্টি সম্পর্কে কিছুটা আলগা সংজ্ঞা ব্যবহার করব, যা মূল ছাড়া অন্য সামগ্রীর অংশে বাইরের রেফারেন্সের অস্তিত্বের অনুমতি দেয়, তবে প্রদত্ত যে - বাইরের পর্যবেক্ষকের দৃষ্টিকোণ থেকে - আচরণটি সামঞ্জস্যপূর্ণ হবে সামগ্রীর প্রতিটি অংশের সাথে কেবলমাত্র মূল সম্পর্কিত একটি উল্লেখ রয়েছে এবং অন্য কোনও অংশের নয় to আমার মতে, মূল নীতিটি হ'ল প্রতিটি পরিবর্তনীয় অবজেক্টের একজন মালিক থাকতে হবে ; একটি সমষ্টি হ'ল অবজেক্টের সংকলন যা সমস্ত একক বস্তুর মালিকানাধীন ("সমষ্টিগত মূল"), যা এর অংশগুলিতে বিদ্যমান সমস্ত রেফারেন্স সম্পর্কে জানতে হবে।
সুপারক্যাট

3

আমি "চাইল্ড-ফ্যাক্টরি" অবজেক্টগুলি রাখার পরামর্শ দেব যা একটি পিতামাতার পদ্ধতিতে পাস করা হয় যা একটি শিশু তৈরি করে ("চাইল্ড ফ্যাক্টরি" অবজেক্টটি ব্যবহার করে), এটি সংযুক্ত করে এবং একটি দৃশ্যে ফিরে আসে। সন্তানের বস্তু নিজেই পিতামাতার বাইরে প্রকাশিত হবে না। এই পদ্ধতির সিমুলেশনগুলির মতো জিনিসগুলির জন্য দুর্দান্তভাবে কাজ করতে পারে। ইলেকট্রনিক্স সিমুলেশনে, একটি নির্দিষ্ট "শিশু কারখানা" অবজেক্ট কোনও ধরণের ট্রানজিস্টারের জন্য নির্দিষ্টকরণের প্রতিনিধিত্ব করতে পারে; অন্য একটি প্রতিরোধকের জন্য নির্দিষ্টকরণের প্রতিনিধিত্ব করতে পারে; একটি সার্কিট যাতে দুটি ট্রানজিস্টর এবং চারটি রোধকের প্রয়োজন হয় কোড সহ তৈরি করা যেতে পারে:

var q2N3904 = new TransistorSpec(TransistorType.NPN, 0.691, 40);
var idealResistor4K7 = new IdealResistorSpec(4700.0);
var idealResistor47K = new IdealResistorSpec(47000.0);

var Q1 = Circuit.AddComponent(q2N3904);
var Q2 = Circuit.AddComponent(q2N3904);
var R1 = Circuit.AddComponent(idealResistor4K7);
var R2 = Circuit.AddComponent(idealResistor4K7);
var R3 = Circuit.AddComponent(idealResistor47K);
var R4 = Circuit.AddComponent(idealResistor47K);

নোট করুন যে সিমুলেটরটি শিশু-স্রষ্টা অবজেক্টের কোনও রেফারেন্স ধরে রাখতে AddComponentহবে না , এবং সিমুলেটর দ্বারা তৈরি এবং রাখা বস্তুর কোনও রেফারেন্স ফেরত দেবে না, বরং এমন একটি বস্তু যা কোনও দৃশ্যের প্রতিনিধিত্ব করে। যদি AddComponentপদ্ধতিটি জেনেরিক হয় তবে ভিউ অবজেক্টটিতে উপাদান-নির্দিষ্ট কার্যাদি অন্তর্ভুক্ত থাকতে পারে তবে মাতাপিতা সংযুক্তি পরিচালনার জন্য যে সদস্যদের ব্যবহার করেন তা প্রকাশ করতে পারে না


2

দুর্দান্ত তালিকা। কোন পদ্ধতিটি "সেরা" তা আমি জানি না তবে সর্বাধিক অভিব্যক্তিপূর্ণ পদ্ধতিগুলি খুঁজে পাওয়ার জন্য এখানে একটি।

সহজতম পিতামাতা এবং শিশু শ্রেণীর সাথে শুরু করুন। তাদের সাথে আপনার কোড লিখুন। একবার আপনি কোডের সদৃশটি লক্ষ্য করতে পারেন যার নাম দেওয়া যেতে পারে আপনি এটিকে একটি পদ্ধতিতে রেখে দেন।

আপনি পেতে পারেন addChild()। হতে পারে আপনি ভালো কিছু পেতে addChildren(List<Child>)বা addChildrenNamed(List<String>)বা loadChildrenFrom(String)বা newTwins(String, String)বা Child.replicate(int)

যদি আপনার সমস্যাটি একের সাথে একাধিক সম্পর্ক জোর করার বিষয়ে হয় তবে আপনার উচিত

  • সেটারগুলিতে এটি জোর করুন যা বিভ্রান্তি বা নিক্ষেপ-দমন হতে পারে
  • আপনি সেটারগুলি সরান এবং বিশেষ অনুলিপি তৈরি করেন বা পদ্ধতিগুলি সরান - যা অভিব্যক্তিপূর্ণ এবং বোধগম্য

এটি কোনও উত্তর নয় তবে আমি আশা করি এটি পড়ার সময় আপনি একটি খুঁজে পেয়েছেন।


0

আমি প্রশংসা করি যে বাচ্চা থেকে পিতামাতার সাথে লিঙ্কগুলি থাকার বিষয়টি উপরে উল্লিখিত হিসাবে ডাউনসাইড ছিল।

তবে অনেক পরিস্থিতিতে পরিস্থিতি এবং অন্যান্য "সংযোগ বিচ্ছিন্ন" বলবিজ্ঞানের সাথে কাজগুলি তাদের নিজস্ব জটিলতা এবং কোডের অতিরিক্ত লাইন নিয়ে আসে।

উদাহরণস্বরূপ, সন্তানের কাছ থেকে এটি গ্রহণের জন্য কোনও ইভেন্ট উত্থাপন পিতা বা মাতা উভয়কে একসঙ্গে .িলে .ালা কাপল ফ্যাশনে আবদ্ধ করবে।

সম্ভবত অনেক পরিস্থিতিতে এটি সমস্ত বিকাশকারীদের কাছে চাইল্ড P পিতামাতার সম্পত্তির অর্থ কী। বেশিরভাগ সিস্টেমে আমি এতে কাজ করেছি ঠিক কাজ করেছে। ওভার ইঞ্জিনিয়ারিং সময় সাশ্রয়ী হতে পারে এবং…। বিভ্রান্তিকর!

একটি প্যারেন্ট (প্যারেন্ট) রয়েছে Haveএটাচচিল্ড () পদ্ধতি যা শিশুকে তার পিতামাতার সাথে আবদ্ধ করার জন্য প্রয়োজনীয় সমস্ত কাজ সম্পাদন করে। এর "অর্থ" এর অর্থ প্রত্যেকেই পরিষ্কার

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.