কারণটা এখানে
class DOSClient {
OrderParser orderParser;
string orderCode;
DOSClient(OrderParser orderParser, string ordercode) {
this.orderParser = orderParser;
this.ordercode = ordercode;
}
void DisplayOrderCode() {
Console.Write( "Prefix: " + orderParser.GetStringPart(ordercode) );
...
}
}
class GUIClient {
OrderParser orderParser;
string orderCode;
GUI gui;
GUIClient(OrderParser orderParser, string ordercode, GUI gui) {
this.orderParser = orderParser;
this.ordercode = ordercode;
this.gui = gui;
}
void DisplayOrderCode() {
gui.Prefix( orderParser.GetStringPart(ordercode) );
...
}
}
class OrderParserUS : IOrderParser {
public string GetStringPart(string input)
{
//Some input validation which is removed for clarity
if(input.Length > 5)
return input.Substring(0,1);
if(input.Substring(0,1) == "B")
return input.Substring(0,3);
return string.empty;
}
}
class OrderParserEU : IOrderParser {
public string GetStringPart(string input)
{
//Some input validation which is removed for clarity
if(input.Length > 6)
return input.Substring(0,1);
if(input.Substring(0,1) == "#")
return input.Substring(0,3);
return string.empty;
}
}
আপনি যদি কোনও স্থির পদ্ধতি নিয়ে চলে এসেছিলেন GetStringPart
তবে পুরানো আচরণটি ধ্বংস না করে বা শর্তযুক্ত যুক্তি দিয়ে দূষিত না করে আচরণ পরিবর্তন করার কোনও উপায় থাকবে না । এটি সত্য যে স্ট্যাটিক্স ছদ্মবেশে অশুভ গ্লোবাল তবে তারা পলিমারফিজমটি অক্ষম করে তোলে এগুলি সম্পর্কে তাদের সম্পর্কে আমার প্রধান অভিযোগ। স্থির পদ্ধতিগুলি ওওপি ভাষায় প্রথম শ্রেণি নয়। পদ্ধতিটি কোনও বেঁচে থাকার জন্য একটি বস্তু দিয়ে, এমনকি কোনও রাজ্য নেই, আমরা সেই পদ্ধতিটিকে পোর্টেবল করে তুলি। এর আচরণটি ভেরিয়েবলের মানের মতো প্রায় পাশ করা যায়।
এখানে আমি এমন একটি সিস্টেম কল্পনা করেছি যা ইউরোপে মোতায়েনের পরে যখন মার্কিন যুক্তরাষ্ট্রে মোতায়েন করা হয় তখন কিছুটা ভিন্ন আচরণ করা দরকার। পরিবর্তে উভয় সিস্টেমকে কেবল কোড দ্বারা নিয়ন্ত্রণ করার জন্য বাধ্য করে অন্যটি প্রয়োজনীয় যা আমরা ক্লায়েন্টগুলিতে কী অর্ডার পার্সিং অবজেক্ট ইনজেকশন করা হয় তা নিয়ন্ত্রণ করে আচরণটি পরিবর্তন করতে পারি। এটি আমাদের অঞ্চলের বিশদটি ছড়িয়ে রাখতে সহায়তা করে। বিদ্যমান পার্সারগুলিকে স্পর্শ না করে অর্ডারপার্সারকানাডা যুক্ত করাও সহজ করে তোলে।
যদি এটি আপনার কাছে কিছু না বোঝায় তবে এটির জন্য আসলে কোনও ভাল যুক্তি নেই।
বিটিডাব্লু, GetStringPart
একটি ভয়ঙ্কর নাম।