এটি অর্জনের একটি সহজ উপায় হ'ল একটি ইন্টারফেস রয়েছে যা একজনকে কেবল বৈশিষ্ট্যগুলি পড়ার অনুমতি দেয় এবং কেবলমাত্র পড়ার পদ্ধতিগুলি কল করতে পারে এবং এমন একটি ক্লাস যা সেই ইন্টারফেসকে কার্যকর করে যা আপনাকে সেই শ্রেণিটি লিখতে দেয়।
আপনার পদ্ধতি যা এটি তৈরি করে, প্রাক্তনটির সাথে ডিল করে এবং তারপরে ইন্টারেস্ট করার জন্য কেবল কেবল একটি পঠনযোগ্য ইন্টারফেস সরবরাহ করে returns এটির জন্য কোনও অনুলিপি লাগবে না এবং এটি আপনাকে স্রষ্টার বিরোধী হিসাবে কলারের কাছে সহজেই সূক্ষ্ম সুর-আচরণের সুযোগ দেয়।
এই উদাহরণটি ধরুন:
public interface IPerson
{
public String FirstName
{
get;
}
public String LastName
{
get;
}
}
public class PersonImpl : IPerson
{
private String firstName, lastName;
public String FirstName
{
get { return firstName; }
set { firstName = value; }
}
public String LastName
{
get { return lastName; }
set { lastName = value; }
}
}
class Factory
{
public IPerson MakePerson()
{
PersonImpl person = new PersonImpl();
person.FirstName = 'Joe';
person.LastName = 'Schmoe';
return person;
}
}
এই পদ্ধতির একমাত্র অসুবিধা হ'ল যে কেউ এটিকে কেবল প্রয়োগকারী শ্রেণিতে ফেলে দিতে পারে। এটি যদি সুরক্ষার বিষয় হয়ে থাকে তবে কেবল এই পদ্ধতির ব্যবহার অপর্যাপ্ত। এটির জন্য একটি কার্যপ্রণালী হ'ল আপনি একটি মুখোমুখি তৈরি করতে পারেন কর্মসংস্থান মিউটেবল ক্লাসটি মোড়ানোর ক্লাস , যা কেবল একটি ইন্টারফেস উপস্থাপন করে যা কলার সাথে কাজ করে এবং অভ্যন্তরীণ বস্তুর অ্যাক্সেস রাখতে পারে না।
এইভাবে, castালাই এমনকি আপনাকে সহায়তা করবে না। উভয়ই কেবল একই পঠনযোগ্য ইন্টারফেস থেকে উদ্ভূত হতে পারে তবে প্রত্যাবর্তিত অবজেক্টটি ingালাই কেবল আপনাকে ফ্যাসাদ শ্রেণি দেবে, যা অপরিবর্তনীয় কারণ এটি মোড়ানো পরিবর্তনীয় শ্রেণীর অন্তর্নিহিত অবস্থা পরিবর্তন করে না।
এটি উল্লেখ করার মতো যে এটি সেই সাধারণ ট্রেন্ডকে অনুসরণ করে না যেখানে একটি নির্ধারিত অবজেক্টটি তার নির্মাণকারীর মাধ্যমে একবার এবং সকলের জন্য নির্মিত হয়। বোধগম্যভাবে, আপনাকে অনেক প্যারামিটারের সাথে ডিল করতে হচ্ছে, তবে আপনার নিজের কাছে জিজ্ঞাসা করা উচিত যে এই সমস্ত পরামিতিগুলি সামনে নির্দিষ্ট করে দেওয়া উচিত বা কিছু পরে প্রবর্তন করা যায় কিনা। সেক্ষেত্রে কেবলমাত্র প্রয়োজনীয় পরামিতি সহ একটি সাধারণ নির্মাণকারীর ব্যবহার করা উচিত। অন্য কথায়, যদি এটি আপনার প্রোগ্রামে অন্য কোনও সমস্যা coveringেকে রাখে তবে এই প্যাটার্নটি ব্যবহার করবেন না।