ল্যাগ / অদৃশ্যতা? আমি বিএস কল করি। এই অনুশীলন থেকে ঠিক শূন্য ওভারহেড থাকা উচিত। ( সম্পাদনা করুন: মন্তব্যে এটি চিহ্নিত করা হয়েছে যে এটি হটস্পট ভিএম দ্বারা করা অপ্টিমাইজেশনকে বাধা দিতে পারে this এটি নিশ্চিত করতে বা অস্বীকার করার জন্য ভিএম বাস্তবায়ন সম্পর্কে আমি যথেষ্ট পরিমাণে জানি না I আমি আমার মন্তব্যটি সি ++ এর বাইরে রেখেছিলাম) ভার্চুয়াল ফাংশন বাস্তবায়ন।)
কিছু কোড ওভারহেড আছে। আপনার বেস বেসটি যা চান তা থেকে সমস্ত কনস্ট্রাক্টর তৈরি করতে হবে, তাদের পরামিতিগুলি ফরওয়ার্ড করে।
আমি এটিকে কোনও এন্টি-প্যাটার্ন হিসাবেও দেখছি না। যাইহোক, আমি এটি একটি মিস সুযোগ হিসাবে দেখছি। পরিবর্তে একটি বর্গ যে শুধু পুনঃনামকরনের অনুরোধে জন্য বেস বর্গ আহরিত তৈরি, কিভাবে আপনি যদি এর পরিবর্তে একটি বর্গ যে তৈরি সম্পর্কে রয়েছে সংগ্রহে এবং অফার একটি মামলা-নির্দিষ্ট, উন্নত ইন্টারফেস? আপনার উইজেট ক্যাশে কি সত্যই কোনও মানচিত্রের পুরো ইন্টারফেসটি সরবরাহ করতে পারে? অথবা এর পরিবর্তে কোনও বিশেষ ইন্টারফেস দেওয়া উচিত?
তদুপরি, সংগ্রহের ক্ষেত্রে, প্যাটার্নটি কেবল ইন্টারফেস ব্যবহারের সাধারণ নিয়মের সাথে একত্রে কাজ করে না, বাস্তবায়ন করে না - অর্থাৎ, সরল সংগ্রহের কোডে আপনি একটি তৈরি করতে পারেন HashMap<String, Widget>
এবং তারপরে এটিকে পরিবর্তনশীল আকারে নির্ধারণ করতে পারেন Map<String, Widget>
। আপনার WidgetCache
প্রসারিত হতে পারে না Map<String, Widget>
, কারণ এটি একটি ইন্টারফেস। এটি কোনও ইন্টারফেস হতে পারে না যা বেস ইন্টারফেসকে প্রসারিত করে, কারণ HashMap<String, Widget>
সেই ইন্টারফেসটি কার্যকর করে না এবং অন্য কোনও মানক সংগ্রহও করে না। এবং যখন আপনি এটিকে প্রসারিত একটি শ্রেণি তৈরি করতে পারেন HashMap<String, Widget>
, তখন আপনাকে ভেরিয়েবলগুলি হিসাবে WidgetCache
বা হিসাবে ঘোষণা করতে হবে Map<String, Widget>
এবং প্রথমটি আপনাকে আলাদা সংগ্রহ (সম্ভবত কিছু ওআরএমের অলস লোডিং সংগ্রহ) প্রতিস্থাপনের নমনীয়তা হারাবে, যখন দ্বিতীয় ধরণের বিন্দুটি পরাজিত করে ক্লাস থাকার।
এর কিছু প্রতিরূপ আমার প্রস্তাবিত বিশেষায়িত শ্রেণিতেও প্রযোজ্য।
এগুলি বিবেচনার জন্য সমস্ত বিষয়। এটি সঠিক পছন্দ বা নাও হতে পারে। উভয় ক্ষেত্রেই, আপনার সহকর্মীর দেওয়া যুক্তিগুলি বৈধ নয়। যদি সে মনে করে এটি একটি বিরোধী-নিদর্শন, তবে তার নাম রাখা উচিত।