এখানে প্রচুর দুর্দান্ত উত্তর রয়েছে তবে আমি প্রায়শই দুটি ইন্টারফেস এবং বিমূর্ত ক্লাস ব্যবহার করাই সর্বোত্তম রুট। এই স্বীকৃত উদাহরণ বিবেচনা করুন:
আপনি একটি বিনিয়োগ ব্যাংকে একটি সফ্টওয়্যার বিকাশকারী এবং আপনার এমন একটি সিস্টেম তৈরি করা দরকার যা বাজারে অর্ডার দেয়। আপনার ইন্টারফেসটি কোনও ট্রেডিং সিস্টেম কী করে তার সর্বাধিক সাধারণ ধারণাটি ধারণ করে ,
1) Trading system places orders
2) Trading system receives acknowledgements
এবং একটি ইন্টারফেসে ক্যাপচার করা যেতে পারে, ITradeSystem
public interface ITradeSystem{
public void placeOrder(IOrder order);
public void ackOrder(IOrder order);
}
এখন বিক্রয় ডেস্কে এবং অন্যান্য ব্যবসায়িক লাইনের সাথে কাজ করা প্রকৌশলীরা তাদের বিদ্যমান অ্যাপ্লিকেশনগুলিতে অর্ডার প্লেসমেন্ট কার্যকারিতা যুক্ত করতে আপনার সিস্টেমের সাথে ইন্টারফেস শুরু করতে পারেন । এবং আপনি এখনও নির্মাণ শুরু করেন নি! এটি ইন্টারফেসের শক্তি।
সুতরাং আপনি এগিয়ে যান এবং শেয়ার ব্যবসায়ীদের জন্য সিস্টেমটি তৈরি করুন ; তারা শুনেছেন যে আপনার সিস্টেমে সস্তা স্টক খুঁজে পেতে একটি বৈশিষ্ট্য রয়েছে এবং এটি চেষ্টা করার জন্য খুব আগ্রহী! আপনি এই আচরণটিকে ডাকা একটি পদ্ধতিতে ক্যাপচার করেন findGoodDeals()
তবে বুঝতে পারেন যে বাজারগুলিতে সংযোগের সাথে জড়িত প্রচুর অগোছালো জিনিস রয়েছে। উদাহরণস্বরূপ, আপনাকে একটি খুলতে হবে SocketChannel
,
public class StockTradeSystem implements ITradeSystem{
@Override
public void placeOrder(IOrder order);
getMarket().place(order);
@Override
public void ackOrder(IOrder order);
System.out.println("Order received" + order);
private void connectToMarket();
SocketChannel sock = Socket.open();
sock.bind(marketAddress);
<LOTS MORE MESSY CODE>
}
public void findGoodDeals();
deals = <apply magic wizardry>
System.out.println("The best stocks to buy are: " + deals);
}
কংক্রিট বাস্তবায়নের মধ্যে এই অগোছালো পদ্ধতিগুলির প্রচুর পরিমাণ রয়েছে connectToMarket()
, তবে findGoodDeals()
প্রকৃতপক্ষে সমস্ত ব্যবসায়ীরাই যত্নশীল।
এখন এখানে বিমূর্ত ক্লাসগুলি খেলতে আসে। আপনার মনিব আপনাকে অবহিত করে যে মুদ্রা ব্যবসায়ীরাও আপনার সিস্টেমটি ব্যবহার করতে চায়। এবং মুদ্রা বাজারগুলির দিকে তাকালে আপনি দেখতে পাবেন যে নদীর গভীরতানির্ণয়টি প্রায় শেয়ার বাজারের মতোই। প্রকৃতপক্ষে, connectToMarket()
বৈদেশিক মুদ্রার বাজারগুলিতে সংযোগ করতে ভারব্যাটিম পুনরায় ব্যবহার করা যেতে পারে। যাইহোক, findGoodDeals()
মুদ্রা অঙ্গনে এটি একটি ভিন্ন ধারণা। সুতরাং আপনি সমুদ্রের ওপারে বৈদেশিক মুদ্রার উইজ বাচ্চাটির কাছে কোডবেস abstract
ছাড়ার আগে, আপনি প্রথমে কোনও ক্লাসে রিফ্যাক্টর রেখে যান, findGoodDeals()
নিরবচ্ছিন্নভাবে রেখে
public abstract class ABCTradeSystem implements ITradeSystem{
public abstract void findGoodDeals();
@Override
public void placeOrder(IOrder order);
getMarket().place(order);
@Override
public void ackOrder(IOrder order);
System.out.println("Order received" + order);
private void connectToMarket();
SocketChannel sock = Socket.open();
sock.bind(marketAddress);
<LOTS MORE MESSY CODE>
}
findGoodDeals()
আপনি ইতিমধ্যে সংজ্ঞায়িত হিসাবে আপনার স্টক ট্রেডিং সিস্টেম প্রয়োগ করে ,
public class StockTradeSystem extends ABCTradeSystem{
public void findGoodDeals();
deals = <apply magic wizardry>
System.out.println("The best stocks to buy are: " + deals);
}
তবে এখন FX হুইজ বাচ্চা findGoodDeals()
মুদ্রার জন্য কেবল একটি বাস্তবায়ন সরবরাহ করে তার সিস্টেমটি তৈরি করতে পারে ; তাকে সকেট সংযোগ বা এমনকি ইন্টারফেসের পদ্ধতিগুলির পুনরায় প্রতিস্থাপন করতে হবে না!
public class CurrencyTradeSystem extends ABCTradeSystem{
public void findGoodDeals();
ccys = <Genius stuff to find undervalued currencies>
System.out.println("The best FX spot rates are: " + ccys);
}
একটি ইন্টারফেসে প্রোগ্রামিং শক্তিশালী, তবে অনুরূপ অ্যাপ্লিকেশন প্রায়শই প্রায় একই পদ্ধতিতে পদ্ধতিগুলি পুনরায় প্রয়োগ করে। ইন্টারফেসের শক্তি সংরক্ষণ করার সময় একটি বিমূর্ত শ্রেণীর ব্যবহার পুনরায় প্রত্যাশা এড়ানো হয়।
দ্রষ্টব্য: কেউ ভাবতে পারেন যে কেন findGreatDeals()
ইন্টারফেসের অংশ নয়। মনে রাখবেন, ইন্টারফেসটি একটি ট্রেডিং সিস্টেমের সর্বাধিক সাধারণ উপাদানগুলি সংজ্ঞায়িত করে। অন্য প্রকৌশলী একটি সম্পূর্ণরূপে বিবিধ বাণিজ্য ব্যবস্থার বিকাশ করতে পারে, যেখানে তারা ভাল ডিলগুলি সন্ধানের বিষয়ে চিন্তা করে না। ইন্টারফেসটি গ্যারান্টি দেয় যে বিক্রয় ডেস্কটি তাদের সিস্টেমেও ইন্টারফেস করতে পারে, সুতরাং "গ্রেট ডিলস" এর মতো অ্যাপ্লিকেশন ধারণার সাথে আপনার ইন্টারফেসকে জড়িয়ে না রাখাই ভাল pre