1. ফাসেড প্যাটার্ন কি
ফাসেড প্যাটার্ন হল এমন একটি ধারাবাহিক ডিজাইন প্যাটার্ন যা অনুমা পদ্ধতির জন্য একটি সংঘটিত ইন্টারফেস প্রদান করে যা উপসিস্টেমের একটি সেটের অ্যাক্সেস করার জন্য একটি সমন্বিত ইন্টারফেস প্রদান করে। এটি সিস্টেমের জটিলতা লুকিয়ে রাখে এবং বাইরে একটি সহজীকৃত ইন্টারফেস প্রদান করে।
2. ফাসেড প্যাটার্নের বৈশিষ্ট্য এবং সুবিধা
ফাসেড প্যাটার্নের নিম্নলিখিত বৈশিষ্ট্য এবং সুবিধা রয়েছে:
- এটি একটি সহজীকৃত ইন্টারফেস প্রদান করে, যা সিস্টেমের ব্যবহারকে সহজ করে।
- ক্লায়েন্ট এবং উপসিস্টেম মধ্যে কাপলিং হ্রাস করে। ক্লায়েন্ট বৈশিষ্ট্যবিশেষণের নির্দিষ্ট সংজ্ঞান না নিয়ে ফাসেড ক্লাসে ইন্টারয়েক্ট করতে হয়।
- এটি খোলা / বন্ধ প্রিন্সিপলে অনুযায়ী সারিবদ্ধ এবং উপসিস্টেমে সুবিধা বৃদ্ধ বা সংশোধন করার জন্য উপযুক্ত।
3. ফাসেড প্যাটার্নের ব্যাবহারের প্রায়োগিক উদাহরণ
ফাসেড প্যাটার্নের ব্যাবহারের প্রায়োগিক উদাহরণ হল:
- জটিল তৃতীয়-পক্ষ লাইব্রেরি বা API-তে অ্যাক্সেস করার জন্য একটি সহজীকৃত ইন্টারফেস প্রদান করা।
- একটি সেট জটিল লজিক অপারেশন ক্যাপচালিত করে ক্লায়েন্টের বোকাচের প্রেরণ প্রসেসটি সরল করার জন্য।
- অন্যান্য সিস্টেমের সাথে ইন্টিগ্রেশনের জন্য একটি সহজ ইন্টারফেস প্রদান করা।
4. গোল্যাং-এ ফাসেড প্যাটার্নের প্রয়োগ
4.1. UML ক্লাস ডায়াগ্রাম
4.2. উদাহরণের পরিচিতি
এই উদাহরণে, আসলে অর্ডার ম্যানেজমেন্ট, ইনভেন্টরি ম্যানেজমেন্ট এবং পেমেন্ট সিস্টেমস সম্প্রিতি অনলাইন শপিং প্ল্যাটফর্ম উপযুক্ত কর্মসূচি। অর্ডার ম্যানেজমেন্ট সিস্টেম ক্রিয়ার মধ্যে অর্ডার তৈরি এবং অর্ডার জটিলের জন্য দায়িত্ববাহী, ইনভেন্টরি ম্যানেজমেন্ট সিস্টেম উৎপাদনের ইনভেন্টরি জানকারী এবং ইনভেন্টরি ন্য়ন্যতমতাচ্ছিন্ন করে দিয়ে দায়িত্ববোধক এবং পেমেন্ট সিস্টেম অর্ডার পেমেন্ট প্রসেস করার জন্য দায়িত্ববাহী। উপসিস্টেমস এবং ক্লায়েন্ট মধ্যে ইন্টারেকশন সরলতা বাস্তবায়িত করার জন্য, আমরা এই উপসিস্টেমসের ইন্টারফেস ডিজাইন করার জন্য ফাসেড প্যাটার্ন ব্যবহার করতে পারি।
4.3. বাস্তবায়নের পরিপ্রেক্ষি
type Facade struct {
subsystemA *SubsystemA
subsystemB *SubsystemB
subsystemC *SubsystemC
}
func NewFacade() *Facade {
return &Facade{
subsystemA: NewSubsystemA(),
subsystemB: NewSubsystemB(),
subsystemC: NewSubsystemC(),
}
}
func (f *Facade) Operation() {
f.subsystemA.OperationA()
f.subsystemB.OperationB()
f.subsystemC.OperationC()
}
4.4. উপসিস্টেম ক্লাস নির্ধারণ
type SubsystemA struct {}
func NewSubsystemA() *SubsystemA {
return &SubsystemA{}
}
func (s *SubsystemA) OperationA() {
// উপসিস্টেম A ব্যবস্থার জন্য লজিক
}
type SubsystemB struct {}
func NewSubsystemB() *SubsystemB {
return &SubsystemB{}
}
func (s *SubsystemB) OperationB() {
// উপসিস্টেম B ব্যবস্থার জন্য লজিক
}
type SubsystemC struct {}
func NewSubsystemC() *SubsystemC {
return &SubsystemC{}
}
func (s *SubsystemC) OperationC() {
// উপসিস্টেম C ব্যবস্থার জন্য লজিক
}
4.5. ফাসেড প্যাটার্ন ব্যবহার করে ক্লায়েন্ট কোড বাস্তবান
func main() {
facade := NewFacade()
facade.Operation()
}