তবে, যতক্ষণ আপনি বিশ্বাস করেন যে লিসকোভের সাবস্টিটিউশন নীতি অনুসরণ করা হবে, তবে আপনি কেন এটিকে ওভারড্রইন করার অনুমতি দিবেন না?
উদাহরণস্বরূপ, কারণ আমি চাইছি একটি অ্যালগোরিদমের কঙ্কাল বাস্তবায়ন স্থির করা হোক এবং কেবল নির্দিষ্ট অংশগুলিকে সাবক্লাস দ্বারা সংজ্ঞায়িত (পুনরায়) করার অনুমতি দিন। এটি ব্যাপকভাবে টেম্পলেট পদ্ধতি প্যাটার্ন হিসাবে পরিচিত (আমার নীচে জোর দেওয়া):
টেমপ্লেট পদ্ধতিটি এইভাবে টাস্ক সিনটিক্সের বৃহত্তর চিত্র এবং পদ্ধতিগুলির নির্বাচন এবং ক্রমের আরও পরিশ্রুত বাস্তবায়ন বিশদ পরিচালনা করে। এই বৃহত্তর ছবিটি হাতের কাজটির জন্য বিমূর্ত এবং অ-বিমূর্ত পদ্ধতিকে কল করে। নন-অ্যাবস্ট্রাক্ট পদ্ধতিগুলি পুরোপুরি টেম্পলেট পদ্ধতি দ্বারা নিয়ন্ত্রণ করা হয় তবে সাব-ক্লাসগুলিতে প্রয়োগ করা বিমূর্ত পদ্ধতিগুলি প্যাটার্নটির অভিব্যক্তিপূর্ণ শক্তি এবং স্বাধীনতার ডিগ্রি সরবরাহ করে। কিছু বা সমস্ত বিমূর্ত পদ্ধতি একটি সাবক্লাসে বিশেষীকরণ করা যেতে পারে, যার ফলে সাবক্লাসের লেখককে বৃহত্তর শব্দার্থবিদ্যায় ন্যূনতম পরিবর্তনগুলির সাথে বিশেষ আচরণ প্রদান করতে দেয়। মূল নকশা অনুসারে অধস্তন নন-অ্যাবস্ট্রাক্ট পদ্ধতি এবং বিমূর্ত পদ্ধতি আহ্বান করা হয়েছে তা নিশ্চিত করে টেম্পলেট পদ্ধতিটি (যা অ-বিমূর্ত) এই প্যাটার্নে অপরিবর্তিত রয়েছে।
হালনাগাদ
আমি যে প্রকল্পগুলিতে কাজ করছি তার কয়েকটি দৃ concrete় উদাহরণ:
- লিগ্যাসি মেইনফ্রেম সিস্টেমের সাথে বিভিন্ন "স্ক্রীন" মাধ্যমে যোগাযোগ করা। প্রতিটি স্ক্রিনে নির্দিষ্ট ডেটা বিট সমেত স্থির নাম, অবস্থান এবং দৈর্ঘ্যের একগুচ্ছ ক্ষেত্র থাকে। একটি অনুরোধ নির্দিষ্ট ডেটা সহ নির্দিষ্ট ক্ষেত্রগুলি পূরণ করে। একটি প্রতিক্রিয়া এক বা একাধিক ক্ষেত্রে ডেটা ফেরত দেয়। প্রতিটি লেনদেন একই মৌলিক যুক্তি অনুসরণ করে তবে প্রতিটি স্ক্রিনে বিশদ আলাদা। সাবক্লাসগুলি স্ক্রিন-নির্দিষ্ট বিশদটি সংজ্ঞায়িত করার সময় স্ক্রিন হ্যান্ডলিং লজিকের স্থির কঙ্কালটি বাস্তবায়নের জন্য আমরা বিভিন্ন প্রকল্পে টেম্পলেট পদ্ধতি ব্যবহার করেছি।
- এক্সেল ফাইলগুলিতে / থেকে ডিবি টেবিলগুলিতে কনফিগারেশন ডেটা রফতানি / আমদানি করা। আবার কোনও এক্সেল ফাইল প্রক্রিয়াকরণ এবং ডিবি রেকর্ডগুলি সন্নিবেশ / আপডেট করা বা এক্সেলকে রেকর্ড ডাম্প করার প্রাথমিক স্কিমা প্রতিটি টেবিলের জন্য একই, তবে প্রতিটি টেবিলের বিবরণ আলাদা। সুতরাং কোড ডুপ্লিকেশনগুলি মুছে ফেলার জন্য কোডটি বুঝতে এবং বজায় রাখা আরও সহজ করার জন্য টেমপ্লেট পদ্ধতিটি একটি খুব স্পষ্ট পছন্দ।
- পিডিএফ ডকুমেন্ট তৈরি করা হচ্ছে। প্রতিটি নথির কাঠামো একই রকম থাকে তবে প্রচুর কারণের উপর নির্ভর করে প্রতিবার তাদের বিষয়বস্তু আলাদা হয়। আবার, টেম্পলেট পদ্ধতিটি প্রজন্মের অ্যালগরিদমের স্থির কঙ্কাল কেস-সুনির্দিষ্ট, পরিবর্তনীয় বিশদ থেকে পৃথক করা সহজ করে তোলে। আসলে. এমনকি এটি এখানে একাধিক স্তরের ক্ষেত্রেও প্রযোজ্য, কারণ নথিতে বেশ কয়েকটি বিভাগ রয়েছে , যার প্রতিটিটি শূন্য বা আরও বেশি ক্ষেত্র নিয়ে গঠিত । টেম্পলেট পদ্ধতিটি এখানে 3 স্বতন্ত্র স্তরে প্রয়োগ করা হয়।
প্রথম দুটি ক্ষেত্রে, মূল লিগ্যাসি বাস্তবায়নে কৌশল ব্যবহৃত হয়েছিল , ফলে প্রচুর নকল কোড তৈরি হয়েছিল, যা বছরের পর বছর ধরে এখানে এবং সেখানে সূক্ষ্ম পার্থক্যের বৃদ্ধি পেয়েছিল এবং এতে প্রচুর নকল বা কিছুটা পৃথক বাগ রয়েছে এবং এটি বজায় রাখা খুব কঠিন ছিল। টেমপ্লেট পদ্ধতিতে রিফ্যাক্টরিং (এবং কিছু অন্যান্য বর্ধন, যেমন জাভা টিকা ব্যবহার করে) কোডের আকার প্রায় 40-70% হ্রাস করে।
এগুলি কেবলমাত্র সাম্প্রতিক উদাহরণ যা আমার মনে আসে। আমি এখন পর্যন্ত প্রায় প্রতিটি প্রকল্পে কাজ করে যাচ্ছি এর থেকে আরও কিছু ঘটনা উদ্ধৃত করতে পারি।