ছোট গল্প: একজন পোস্টম্যানকে বাড়ির পরে বাড়িতে যেতে এবং কভারগুলি (চিঠি, নথি, চেক, উপহার কার্ড, অ্যাপ্লিকেশন, প্রেমের চিঠি) সরবরাহ করার জন্য লিখিত ঠিকানাটি সহ তাকে জিজ্ঞাসা করা হয়।
মনে করুন কোনও প্রচ্ছদ নেই এবং পোস্টম্যানকে বাড়ির পরে বাড়িতে যেতে এবং সমস্ত জিনিস গ্রহণ করতে এবং অন্য লোকের কাছে পৌঁছে দিতে বলে, পোস্টম্যান বিভ্রান্ত হতে পারে।
সুতরাং এটি কভার দিয়ে আরও ভালভাবে মুড়িয়ে দিন (আমাদের গল্পে এটি ইন্টারফেস) তবে সে তার কাজটি ভাল করে নেবে।
এখন পোস্টম্যানের কাজটি কেবল কভারগুলি গ্রহণ এবং বিতরণ করা (তিনি কভারের ভিতরে থাকা বিষয়গুলিই উদ্বিগ্ন করবেন না)।
interface
আসল টাইপ নয় এমন একটি প্রকার তৈরি করুন , তবে প্রকৃত প্রকারের সাথে এটি প্রয়োগ করুন।
ইন্টারফেসে তৈরি করার অর্থ আপনার উপাদানগুলি বাকী কোডে সহজেই ফিট হয়ে যায়
আমি একটি উদাহরণ দিচ্ছি।
আপনার নীচের মতো এয়ারপ্লেইন ইন্টারফেস রয়েছে।
interface Airplane{
parkPlane();
servicePlane();
}
ধরুন আপনার প্লেনের কন্ট্রোলার ক্লাসে এমন পদ্ধতি রয়েছে
parkPlane(Airplane plane)
এবং
servicePlane(Airplane plane)
আপনার প্রোগ্রামে প্রয়োগ করা হয়েছে। এটি আপনার কোডটি BREAK করবে না । আমি বোঝাতে চাইছি যতক্ষণ এটি যুক্তি স্বীকার করে ততক্ষণ তার পরিবর্তন করার দরকার নেই AirPlane
।
কারণ এটা প্রকৃত টাইপ সত্ত্বেও কোনো উড়োজাহাজ গ্রহণ করবে, flyer
, highflyr
, fighter
, ইত্যাদি
এছাড়াও, একটি সংগ্রহে:
List<Airplane> plane;
// আপনার সমস্ত প্লেন নেবে।
নীচের উদাহরণটি আপনার বুঝতে পরিষ্কার করবে।
আপনার কাছে একটি যুদ্ধবিমান রয়েছে যা এটি কার্যকর করে
public class Fighter implements Airplane {
public void parkPlane(){
// Specific implementations for fighter plane to park
}
public void servicePlane(){
// Specific implementatoins for fighter plane to service.
}
}
হাইফ্লায়ার এবং অন্যান্য অনুমানের জন্য একই জিনিস:
public class HighFlyer implements Airplane {
public void parkPlane(){
// Specific implementations for HighFlyer plane to park
}
public void servicePlane(){
// specific implementatoins for HighFlyer plane to service.
}
}
এখন আপনার নিয়ন্ত্রণকারী ক্লাসগুলি AirPlane
বেশ কয়েকবার ব্যবহার করে ভাবেন ,
মনে করুন আপনার নিয়ামক শ্রেণিটি নীচের মতো কন্ট্রোলপ্লেন,
public Class ControlPlane{
AirPlane plane;
// so much method with AirPlane reference are used here...
}
এখানে যাদু আসার সাথে সাথে আপনি নিজের নতুন AirPlane
টাইপের উদাহরণগুলি যতটা চান তৈরি করতে পারেন এবং আপনি ControlPlane
ক্লাসের কোড পরিবর্তন করছেন না ।
আপনি একটি উদাহরণ যোগ করতে পারেন ...
JumboJetPlane // implementing AirPlane interface.
AirBus // implementing AirPlane interface.
আপনি পূর্বে তৈরির ধরণের উদাহরণগুলিও সরিয়ে ফেলতে পারেন।