জাভা এবং সি # তে, আপনি বৈশিষ্ট্যগুলির সাথে একটি অবজেক্ট তৈরি করতে পারেন যা পরামিতিগুলির সাথে কনস্ট্রাক্টর সংজ্ঞায়িত করে, অবজেক্টটি তৈরির পরে প্রতিটি সম্পত্তি সংজ্ঞায়িত করে বা বিল্ডার / ফ্লুয়েড ইন্টারফেস প্যাটার্ন ব্যবহার করে সেট করা যেতে পারে। যাইহোক, সি # 3 প্রবর্তিত অবজেক্ট এবং সংগ্রহের সূচনাকারীদের বোঝায়, যার অর্থ বিল্ডার প্যাটার্নটি মূলত অকেজো। ইনিশিয়ালার্সহীন ভাষায় কোনও বিল্ডার বাস্তবায়ন করতে পারে তারপরে এটি ব্যবহার করতে পারে:
Vehicle v = new Vehicle.Builder()
.manufacturer("Toyota")
.model("Camry")
.year(1997)
.colour(CarColours.Red)
.addSpecialFeature(new Feature.CDPlayer())
.addSpecialFeature(new Feature.SeatWarmer(4))
.build();
বিপরীতে, সি # তে একটি লিখতে পারে:
var vehicle = new Vehicle {
Manufacturer = "Toyota",
Model = "Camry",
Year = 1997,
Colour = CarColours.Red,
SpecialFeatures = new List<SpecialFeature> {
new Feature.CDPlayer(),
new Feature.SeatWarmer { Seats = 4 }
}
}
... পূর্ববর্তী উদাহরণে যেমন দেখা গেছে তেমন কোনও বিল্ডারের প্রয়োজনীয়তা অপসারণ।
এই উদাহরণগুলির উপর ভিত্তি করে, বিল্ডাররা কি এখনও সি # তে কার্যকর, বা প্রাথমিকভাবে তারা পুরোপুরি ছাড়িয়ে গেছে?
are builders useful
আমি এই ধরণের প্রশ্ন কেন দেখছি? একজন নির্মাতা একটি ডিজাইনের ধরণ - অবশ্যই, এটি কোনও ভাষা বৈশিষ্ট্য হিসাবে প্রকাশিত হতে পারে তবে দিনের শেষে এটি কেবল একটি নকশার ধরণ। একটি ডিজাইনের ধরণ "ভুল" হতে পারে না । এটি আপনার ব্যবহারের ক্ষেত্রে পরিপূর্ণ হতে পারে বা না পারে তবে এটি পুরো প্রয়োগটি ভুল করে না, কেবল এটির প্রয়োগ। মনে রাখবেন যে দিনের শেষে নকশার ধরণগুলি নির্দিষ্ট সমস্যাগুলি সমাধান করে - যদি আপনি সমস্যার মুখোমুখি না হন তবে আপনি কেন এটি সমাধান করার চেষ্টা করবেন?