কৌশল প্যাটার্ন বিশাল ... যদি অন্যটি নির্মাণ করে এবং কার্যকারিতা যুক্ত করতে বা প্রতিস্থাপন করা সহজ করে তোলে তবে তা এড়াতে ভাল কাজ করে। তবে এটি এখনও আমার মতে একটি ত্রুটি রেখে যায়। দেখে মনে হচ্ছে প্রতিটি বাস্তবায়নে এখনও একটি শাখা নির্মানের প্রয়োজন। এটি কারখানা বা একটি ডেটা ফাইল হতে পারে। উদাহরণ হিসাবে একটি অর্ডার সিস্টেম গ্রহণ।
কারখানার:
// All of these classes implement OrderStrategy
switch (orderType) {
case NEW_ORDER: return new NewOrder();
case CANCELLATION: return new Cancellation();
case RETURN: return new Return();
}
এর পরে কোডটি উদ্বিগ্ন হওয়ার দরকার নেই, এবং এখন একটি নতুন অর্ডার প্রকার যুক্ত করার জন্য কেবলমাত্র একটি জায়গা রয়েছে, তবে কোডের এই বিভাগটি এখনও বর্ধিত নয়। এটি একটি ডেটা ফাইলের মধ্যে টান দিয়ে পঠনযোগ্যতা কিছুটা সহায়তা করে (বিতর্কযোগ্য, আমি জানি):
<strategies>
<order type="NEW_ORDER">com.company.NewOrder</order>
<order type="CANCELLATION">com.company.Cancellation</order>
<order type="RETURN">com.company.Return</order>
</strategies>
তবে এটি এখনও ডেটা ফাইল প্রক্রিয়া করতে বয়লারপ্লেট কোড যুক্ত করে - অনুমোদিত, আরও সহজে ইউনিট পরীক্ষামূলক এবং তুলনামূলকভাবে স্থিতিশীল কোড, তবুও অতিরিক্ত জটিলতা।
এছাড়াও, এই ধরণের কনস্ট্রাক্টটি ভালভাবে ইন্টিগ্রেশন পরীক্ষা করে না। প্রতিটি স্বতন্ত্র কৌশল এখনই পরীক্ষা করা আরও সহজ হতে পারে তবে আপনি যুক্ত প্রতিটি নতুন কৌশলই পরীক্ষার সংযোজন complex আপনি যদি প্যাটার্নটি না ব্যবহার করেন তবে এটি আপনার চেয়ে কম তবে এটি এখনও রয়েছে।
এই জটিলতা প্রশমিত করার কৌশল বিন্যাস বাস্তবায়নের কোন উপায় আছে কি? বা এটি যেমনটি পায় ঠিক তত সহজ এবং আরও এগিয়ে যাওয়ার চেষ্টা করলে সামান্য লাভের জন্য বিমূর্ততার আরও একটি স্তর যুক্ত হবে?
eval
... জাভাতে কাজ করবে না তবে অন্য ভাষায় হতে পারে?