বৈশিষ্ট্য রচনা করার অন্য উপায়। আপনার প্রয়োজনীয় অংশগুলির কংক্রিট বাস্তবায়ন একত্রিত করে সংকলনের সময় (বা জেআইটি সংকলনের সময়) শ্রেণীর সমস্ত অংশ রচনা করার উপায় হিসাবে এগুলি ভাবেন।
মূলত, আপনি যখন বৈশিষ্ট্যগুলির বিভিন্ন সংমিশ্রণ সহ নিজেকে ক্লাস তৈরি করতে দেখেন তখন আপনি বৈশিষ্ট্যগুলি ব্যবহার করতে চান। এই পরিস্থিতিটি প্রায়শই লোকেদের অন্যদের গ্রাস করার জন্য নমনীয় গ্রন্থাগার লেখার ক্ষেত্রে আসে। উদাহরণস্বরূপ, স্কেলটেষ্ট ব্যবহার করে আমি সম্প্রতি লিখেছি এমন একটি ইউনিট পরীক্ষার শ্রেণীর ঘোষণা এখানে দেওয়া হয়েছে :
class TestMyClass
extends WordSpecLike
with Matchers
with MyCustomTrait
with BeforeAndAfterAll
with BeforeAndAfterEach
with ScalaFutures
ইউনিট পরীক্ষা অবকাঠামো একটি আছে টন বিভিন্ন কনফিগারেশন অপশনের, এবং প্রত্যেক দল সম্পর্কে কিভাবে তারা কিছু কাজ করতে চান বিভিন্ন পছন্দগুলি হয়েছে। বিকল্পগুলিকে বৈশিষ্ট্যগুলিতে (যা with
স্কালায় ব্যবহারের সাথে মিশ্রিত করা হয় ) রেখে, স্কাল্যাস্টেস্ট এই জাতীয় বিকল্পগুলির মতো ক্লাসের নামগুলি তৈরি না করে WordSpecLikeWithMatchersAndFutures
, বা একট টন রানটাইম বুলিয়ান পতাকা পছন্দ না করেই এই সমস্ত বিকল্প সরবরাহ করতে পারে WordSpecLike(enableFutures, enableMatchers, ...)
। এটি ওপেন / বদ্ধ নীতি অনুসরণ করা সহজ করে তোলে । আপনি কেবল নতুন বৈশিষ্ট্য যুক্ত করে নতুন বৈশিষ্ট্য এবং বৈশিষ্ট্যের নতুন সংমিশ্রণ যুক্ত করতে পারেন। এটি ইন্টারফেস বিভাজন নীতি অনুসরণ করাও সহজ করে তোলে কারণ আপনি সর্বজনীনভাবে প্রয়োজনীয় বৈশিষ্ট্যগুলি কোনও বৈশিষ্ট্যে সহজেই স্থাপন করতে পারেন।
বৈশিষ্ট্যগুলিও বেশ কয়েকটি ক্লাসে সাধারণ কোড রাখার একটি ভাল উপায় যা উত্তরাধিকারের শ্রেণিবদ্ধতা ভাগ করে নেওয়া বোঝায় না। উত্তরাধিকার হ'ল একটি অত্যন্ত দৃ -়-যুগল সম্পর্ক, এবং যদি আপনি এটির সহায়তা করতে পারেন তবে আপনাকে সেই মূল্য দিতে হবে না। বৈশিষ্ট্য অনেক বেশি looseিলে .ালা-দম্পতির সম্পর্ক। উপরের আমার উদাহরণে, আমি MyCustomTrait
বেশ কয়েকটি অন্যান্য সম্পর্কিত সম্পর্কযুক্ত পরীক্ষা ক্লাসের মধ্যে একটি মক ডাটাবেস বাস্তবায়ন সহজেই ভাগ করে নিই ।
নির্ভরতা ইনজেকশন একই লক্ষ্যগুলির অনেকগুলি অর্জন করে, তবে প্রোগ্রামার ইনপুটের উপর ভিত্তি করে সংকলন সময়ে পরিবর্তে ব্যবহারকারী ইনপুটের ভিত্তিতে রানটাইমে। বৈশিষ্ট্যগুলি নির্ভরতাগুলির জন্য আরও লক্ষ্যযুক্ত যা শব্দার্থগতভাবে একই শ্রেণীর অংশ part আপনি অন্য শ্রেণীর সাথে অন্যান্য দায়িত্ব নিয়ে কল করার চেয়ে এক শ্রেণির অংশগুলি সাজিয়ে তোলেন।
নির্ভরতা ইনজেকশন ফ্রেমওয়ার্কগুলি প্রোগ্রামার ইনপুটের উপর ভিত্তি করে সংকলন সময়ে একই লক্ষ্যগুলির অনেকগুলি অর্জন করে, তবে বেশিরভাগ ক্ষেত্রে যথাযথ বৈশিষ্ট্য সমর্থন ছাড়াই প্রোগ্রামিং ল্যাঙ্গুয়েজগুলির পক্ষে এক কার্যকরী কাজ। বৈশিষ্ট্যগুলি এই সহজলভ্যতাগুলি একটি সহজ বিল্ড প্রক্রিয়া সহ ক্লায়ার সিনট্যাক্স সহ সংকলকটির ধরণের পরীক্ষকের ক্ষেত্রের মধ্যে নিয়ে আসে, যা সংকলন-সময় এবং রানটাইম নির্ভরতাগুলির মধ্যে আরও স্পষ্ট পার্থক্য করে।