মূলত আমাকে একটি নির্দিষ্ট শর্তের ভিত্তিতে বিভিন্ন ক্রিয়া সম্পাদন করতে হবে। বিদ্যমান কোডটি এভাবে লেখা হয়
বেস ইন্টারফেস
// DoSomething.java
interface DoSomething {
void letDoIt(String info);
}
প্রথম শ্রমিক শ্রেণি বাস্তবায়ন
class DoItThisWay implements DoSomething {
...
}
দ্বিতীয় শ্রমিক শ্রেণি বাস্তবায়ন
class DoItThatWay implements DoSomething {
...
}
মূল ক্লাস
class Main {
public doingIt(String info) {
DoSomething worker;
if (info == 'this') {
worker = new DoItThisWay();
} else {
worker = new DoItThatWay();
}
worker.letDoIt(info)
}
এই কোডটি ঠিকঠাক কাজ করে এবং বোঝা সহজ।
এখন, একটি নতুন প্রয়োজনীয়তার কারণে, আমার কাছে একটি নতুন তথ্য সরবরাহ করা দরকার যা কেবলমাত্র বোধগম্য DoItThisWay
।
আমার প্রশ্নটি: নিম্নলিখিত কোডিং শৈলীটি এই প্রয়োজনীয়তাটি পরিচালনা করতে ভাল করে?
নতুন শ্রেণীর পরিবর্তনশীল এবং পদ্ধতি ব্যবহার করুন
// Use new class variable and method
class DoItThisWay implements DoSomething {
private int quality;
DoSomething() {
quality = 0;
}
public void setQuality(int quality) {
this.quality = quality;
};
public void letDoIt(String info) {
if (quality > 50) { // make use of the new information
...
} else {
...
}
} ;
}
যদি আমি এটি এইভাবে করি তবে আমার কলারের সাথে সম্পর্কিত পরিবর্তন করা দরকার:
class Main {
public doingIt(String info) {
DoSomething worker;
if (info == 'this') {
int quality = obtainQualityInfo();
DoItThisWay tmp = new DoItThisWay();
tmp.setQuality(quality)
worker = tmp;
} else {
worker = new DoItThatWay();
}
worker.letDoIt(info)
}
এটি কি একটি ভাল কোডিং শৈলী? বা আমি এটি কাস্ট করতে পারি
class Main {
public doingIt(String info) {
DoSomething worker;
if (info == 'this') {
int quality = obtainQualityInfo();
worker = new DoItThisWay();
((DoItThisWay) worker).setQuality(quality)
} else {
worker = new DoItThatWay();
}
worker.letDoIt(info)
}
DoItThisWay
এবং DoItThatWay
একবার হয়ে গেছে Main
। Main
এটি একটি দীর্ঘ জীবিত শ্রেণি এবং doingIt
এটি বহুবার এবং বারবার বলা হয়।
setQuality
কিছুর পরে এই DoItThisWay
বস্তুটির জীবদ্দশায় একাধিকবার ডাকা হবে ?
quality
কনস্ট্রাক্টরের জন্য পাস করবেন নাDoItThisWay
?