রেস ট্র্যাকের উপর বসে থাকা গাড়ির একগুচ্ছ দলগুলি কী করছে?
যদি আপনার সমস্ত গাড়ি শ্রেণীর গাড়ির অংশগুলি রাখা থাকে তবে এটি অংশগুলির ভিজা ব্যাগের মতোই কার্যকর।
ব্যবহার
ড্রাইভার হিসাবে আমি যা চাই তা নিয়ন্ত্রণ করতে পারি। যখন আমি গতি চেয়েছি তখন তা সাড়া দেয়। এটি রেলের মতো এটি পরিচালনা করে। যে একটি ধীরে ধীরে থামতে পারে।
আমি যা চাই তা ব্যবহারযোগ্য class যা আমি কার্বুরেটর কীভাবে কাজ করে তা ভেবে চিন্তা না করেই কাজগুলি করতে বলতে পারি। আমি কেবল গ্যাস প্যাডেল সম্পর্কে চিন্তা করি। সেগুলি কীভাবে সংযুক্ত রয়েছে তা আমি উদ্বিগ্ন কিছু নয়। এটি বিমূর্ততা।
ইনজেকশন নির্ভরতা
নির্ভরতা ইনজেকশন এর সাথে কিছু করার নেই। আমি যখন গাড়ি চালাচ্ছি তখন আমি কীভাবে এটি তৈরি হয়েছিল সে সম্পর্কে ভাবছি না। যতক্ষণ না এটি কাজ করে ততক্ষণ আমি কীভাবে এটি একসাথে রাখি তা আমার খেয়াল নেই।
না, ডিআই হ'ল ট্র্যাকের বৃষ্টিপাত শুরু হওয়ার সাথে সাথে আমার পিট ক্রুগুলি আরও ভালর জন্য আমার টায়ারগুলি দ্রুত বদলাতে দেয়। সম্পূর্ণ ভিন্ন গাড়ীতে hopুকতে না পেরে এটি করতে পেরে ভাল লাগছে।
ডিআই সত্যই কোনও নীতি অনুসরণ করে: নির্মাণ থেকে পৃথক ব্যবহার।
এমন একটি গাড়ি যা এক ঘন্টা 90 মাইল বেগে নতুন টায়ার ইনস্টল করতে পারে তা শীতল লাগতে পারে তবে আমি মনে করি না যে এটি কোনও টায়ারের সাথে বৈদ্যুতিন ইনস্টল করে কোনও ঘোড়দৌড় জিততে চলেছে।
ডিআই আপনার অংশগুলি এমনভাবে ইনস্টল করার বিষয়ে যা আপনার পিট ক্রুদের কাছে আসুক। আপনি new
একই স্থানে ব্যবহার করার সময় আপনি আচরণের প্রোগ্রামটি এমন হয় যে আপনি কার্বুরেটরটি জায়গায় ldালাই করছেন। অবশ্যই একটি এসিটিলিন টর্চ এটি সরিয়ে ফেলতে পারে তবে দয়া করে প্রথমে বাদাম এবং বল্ট ব্যবহার বিবেচনা করুন।
ডিআই হ'ল এটি। নিশ্চিত new
যে আপনি এটি চান তা বুঝতে পারার সাথে সাথে কোনও কিছু যুক্ত করার মতো সহজ নয়। পরিবর্তে আপনাকে আলাদা কোড লিখতে হবে যা আপনার গাড়ী কীভাবে তৈরি করবেন তা জানে। তবে এটি নিশ্চিত করে যে পরে জিনিসগুলি পরিবর্তন করা সহজ করে তোলে। এবং এর অর্থ এটি আপনার নিজের সাথে ট্র্যাকের চারপাশে একটি গাড়ী সমাবেশ প্ল্যান্ট টানতে হবে না।
নির্মাণ
কিছু, কোথাও, টায়ার গুডইয়ার কিনা তা জানতে হবে। তাহলে গাড়ি নির্মাণের কোডটি কোথায় রাখবেন? গাড়ি না হলে পিট ক্রু? নং ট্র্যাক? না। তাদের সবার আচরণ আচরণ রয়েছে। কোডটি অবশ্যই রেসের সময় সম্পাদন করবে। আচরণ কোড থেকে সরানো কোনও জায়গায় প্রতিযোগিতার আগে গাড়িটি তৈরি করা উচিত। চিহ্নিত সিমেন্স এই জায়গাটিকে কম্পোজিশন রুট বলে । বেশিরভাগ লোক একে মূল বলে।
এটি একটি সাধারণ প্যাটার্ন। প্রধানত, অবজেক্ট গ্রাফটি তৈরি করুন তারপরে অবজেক্ট গ্রাফের একটি বস্তুর উপর একটি আচরণগত পদ্ধতি কল করুন। এটাই. এটি কেবলমাত্র জায়গা নির্মাণ এবং আচরণের একসাথে থাকতে হবে।
এর অর্থ এই নয় যে নির্মাণগুলি মূলত ক্রমানুসারে নির্ধারিত সমস্ত পদ্ধতিগত কোডের স্তূপ হতে হবে। আপনি নির্মাণের জন্য ভাষার প্রতিটি সরঞ্জাম ব্যবহার করতে পারবেন শুধু এটি আচরণের সাথে মিশ্রিত করবেন না।
ভাষায় এটি করা এবং কিছু ডিআই ফ্রেমওয়ার্ক বা আইওসি পাত্রে ব্যবহার না করাকে খাঁটি ডিআই বলে । এটি খুব ভাল কাজ করে। অনেক দিন ধরে আছে আমরা এটিকে কেবল রেফারেন্স পাসিং বলি ।
ডিআই সরঞ্জাম
ডিআই সরঞ্জাম আপনাকে কী কিনে তা হ'ল নির্মাণের বিশদটি আলাদা ভাষায় স্থানান্তরিত হয় (এক্সএমএল, জসন, যাই হোক না কেন) যা নির্মাণ এবং আচরণের মধ্যে বিচ্ছিন্নকরণকে কার্যকর করে। আপনি যদি আপনার সহযোগী প্রোগ্রামারদের বিশ্বাস new
না করেন যেগুলি যখন ব্যবহার না করা উচিত তখন তা আবেদনময়ী হতে পারে।
ফিরে আসার বিষয়টি হ'ল এটি ডিআই সরঞ্জামের বিশদটি কোড বেজ জুড়ে ছড়িয়ে দিতে প্রলুব্ধ করে। কখনও কখনও স্বত্বগত টীকা সহ কোড বেস সংক্রামিত করা। তারা প্রদত্ত উদাহরণ অবশ্যই এটিকে উত্সাহ দেয়। আপনি জাভা প্রোগ্রামিং কাজ হিসাবে কিন্তু জাভা / স্প্রিং প্রোগ্রামিং জব হিসাবে কেবল বিজ্ঞাপনটির বিজ্ঞাপন দিতে না পারছেন না এমন সময় পর্যন্ত সরঞ্জামটি ভাষা স্পেসে চলে যায়।
নকশার মূলনীতি
যুগ যুগ ধরে আমি গাড়ি ক্লাসগুলি প্রোগ্রাম করছিলাম কারণ এটি স্পষ্ট ছিল যে আমি যদি কার যুক্তির সাথে প্রোগ্রামিং করছি তবে আমার কাছে একটি গাড়ি শ্রেণি প্রয়োজন। তবে ডিআইয়ের সাথে এটি আমার কাছে এতটা স্পষ্ট নয়। তবুও ভাবছি, ডিআই-এর পক্ষে যদি আমার কোনও সংজ্ঞায়িত ভূমিকা না থাকে তবে কোনও গাড়ি শ্রেণি তৈরি করা মূর্তিমান?
আমি মনে করি আপনি বিমূর্ততা সম্পর্কে শিখছেন এবং কীভাবে কোনও ক্লাসের প্রয়োজন তা কীভাবে ঠিক করবেন তা পরিবর্তন করার বিষয়ে। এটা ভালো. তবে এটি ডিআই সম্পর্কে নয়। আপনার কার শ্রেণীর প্রয়োজন কিনা তা নির্ধারণে ডিআই আপনাকে সহায়তা করে না। ডিআই আপনাকে গাড়িটি জেনে রাখা থেকে রক্ষা করতে এবং ততোধিক যত্ন নিতে সহায়তা করে যদি টায়ারগুলি গুডইয়ার টায়ার হয়। জাপান গাড়ি তৈরি করা হয়েছে কিনা তা জানতে ডিআই আপনাকে ট্র্যাক রাখতে সহায়তা করে।
সফটওয়্যার ডিজাইনের অন্যতম মৌলিক প্রশ্ন হ'ল "কী সম্পর্কে জানে?" এটিই ইউএমএল চিত্রটি আপনাকে দেখায় thing আপনি যখন কোনও কিছু নতুন করে আনেন তখন আপনি যে কংক্রিটের সাথে আবদ্ধ হন তার ইন্টারফেস হয়। গাড়ীটি এখন জানতে হবে যে টায়ারগুলি গুডইয়ার। মিচেলিয়ান আপনাকে স্পনসর করতে চাইলে কোন ধরণের স্তন্যপান হয়।
এটি করা থেকে বিরত থাকা নির্ভরতা বিপরীত নীতি অনুসরণ করে বলা হয় । সাধারণত, একটি উচ্চ স্তরের মডিউল (গাড়ির বর্গের মতো) সরাসরি নিম্ন স্তরের মডিউলগুলিতে (গুডিয়ায়ার টায়ারের ক্লাসের মতো) উপর নির্ভর করে না। এটি কোনও বিমূর্তনের উপর নির্ভর করতে হবে (টায়ার ইন্টারফেসের মতো)।
এটি করা এড়ানোর একটি উপায় যাকে বলা হয় নিয়ন্ত্রণের বিপরীত পরিবর্তন । নিয়ন্ত্রণের প্রবাহ পরিবর্তন করার জন্য এখানে জোর দেওয়া হচ্ছে। টায়ার গাড়ি চালনা করে বা গাড়িটি টায়ারগুলিকে সরিয়ে দেয়? এ সম্পর্কে সঠিক উপায়ে চিন্তাভাবনা আমাদের স্থিতিশীলভাবে গাড়ি এবং টায়ারগুলিকে একসাথে জুড়তে দেয় না। বিপরীত নিয়ন্ত্রণের অনুসরণের ডিআই হ'ল একটি বিশেষ উপায়।
আপনার কোনও গাড়ির ক্লাস প্রয়োজন কিনা তা আপনাকে কিছুই বলে না। যদি আপনি "গাড়ী যুক্তি" প্রোগ্রামিং করেন তবে এটির রাখার জন্য যদি এক জায়গায় থাকে তবে তা যেখানেই ছড়িয়ে ছিটিয়ে দেওয়া ভাল nice কেবল গাড়ি নির্মাণ যুক্তি ভাবতে বোকা বোধ করবেন না কার আচরণের যুক্তি যেমন একই তাই এটি সমস্তকে একই জায়গায় থাকতে হবে। তবে আপনার যদি গাড়ির জন্য কোনও সংজ্ঞায়িত রোল না থাকে তবে আপনারও দরকার নেই। আপনার পছন্দ হলে ট্র্যাকের চারপাশে রেস মোটরসাইকেল।
আমি বলতে চাই যে ড্রাইভিংয়ের জন্য স্টিয়ারিং হুইল, পিট ক্রুদের জন্য বল্টস অ্যান্ড নটস চাকা এবং সমস্ত ধরণের অন্যান্য মজার ইন্টারফেসের জন্য পুরোপুরি কোনও গাড়ি প্রতিনিধিত্ব করে না এমনটি থাকা কি ঠিক আছে?
ডিআই বা না ডিআই, এটি মোটামুটি একটি গাড়ি প্রতিনিধিত্ব করে এমন উদাহরণ থাকা ভাল, তবে সেই উদাহরণটি আমার কাছে না লাগলে সরাসরি সম্পর্কে জানতে চাইলে এমন কিছু নয়। আমাকে একটি গাড়ি বিমূর্ততা দিন যাতে আমি যখন গ্যাস, ডিজেল বা বিদ্যুৎ ব্যবহার করি তখন এটি চালানোর দরকার হয় না care আমি এটি তৈরির সময় বা এটি রক্ষণাবেক্ষণ করার সময় কেবলমাত্র আমার যত্ন নেওয়া উচিত। গাড়িটি ব্যবহার করা কোডটি কীভাবে এটি কাজ করে তা জানতে বা যত্নের প্রয়োজন না থাকলে এটি দুর্দান্ত। "আমি জানি না। আমি জানতে চাই না।"