কারখানার অনেক সুবিধা রয়েছে যা কিছু পরিস্থিতিতে মার্জিত অ্যাপ্লিকেশন ডিজাইনের অনুমতি দেয়। একটি হ'ল আপনি পরে কারখানার তৈরি করে যে স্থানে তৈরি করতে চান সেই সামগ্রীর বৈশিষ্ট্যগুলি সেট করতে পারেন এবং তারপরে সেই কারখানাটি হস্তান্তর করতে পারেন। তবে প্রায়শই আপনাকে আসলে এটি করার প্রয়োজন হয় না। সেক্ষেত্রে কারখানাটি ব্যবহার করা আসলে আপনাকে বিনিময়ে কিছু না দিয়ে অতিরিক্ত জটিলতা যুক্ত করে। আসুন এই কারখানাটি নেওয়া যাক:
WidgetFactory redWidgetFactory = new ColoredWidgetFactory(COLOR_RED);
Widget widget = redWidgetFactory.create();
কারখানার প্যাটার্নের একটি বিকল্প হ'ল খুব অনুরূপ বিল্ডার প্যাটার্ন। প্রধান পার্থক্য হ'ল কারখানার দ্বারা তৈরি বস্তুর বৈশিষ্ট্যগুলি ফ্যাক্টরিটি শুরু করার সময় সেট করা হয়, যখন কোনও বিল্ডার একটি ডিফল্ট রাষ্ট্রের সাথে আরম্ভ হয় এবং সমস্ত বৈশিষ্ট্য পরে সেট করা হয়।
WidgetBuilder widgetBuilder = new WidgetBuilder();
widgetBuilder.setColor(COLOR_RED);
Widget widget = widgetBuilder.create();
কিন্তু যখন ওভাররেইঞ্জিরিং আপনার সমস্যা হয় তখন কোনও বিল্ডারের সাথে কারখানার প্রতিস্থাপন করা সম্ভবত কোনও উন্নতি হয় না।
উভয়ই প্যাটার্নের সর্বাধিক সহজ প্রতিস্থাপনটি অবশ্যই newঅপারেটরের সাথে একটি সাধারণ কনস্ট্রাক্টরের সাথে অবজেক্ট-ইনস্ট্যান্স তৈরি করা :
Widget widget = new ColoredWidget(COLOR_RED);
কনস্ট্রাক্টরগুলির অবশ্য বেশিরভাগ অবজেক্ট-ভিত্তিক ভাষাগুলিতে একটি গুরুত্বপূর্ণ ত্রুটি রয়েছে: তাদের অবশ্যই সেই সঠিক শ্রেণীর একটি বস্তু ফেরত দিতে হবে এবং উপ-প্রকারটি ফিরে আসতে পারে না।
রানটাইমের সময় আপনাকে যখন সাব-টাইপটি বেছে নেওয়ার প্রয়োজন হয় তবে সেটির জন্য সম্পূর্ণ নতুন বিল্ডার বা কারখানার শ্রেণি তৈরি করা অবলম্বন করতে চান না, আপনি পরিবর্তে একটি কারখানা-পদ্ধতি ব্যবহার করতে পারেন। এটি এমন কোনও শ্রেণীর একটি স্থিতিশীল পদ্ধতি যা সেই শ্রেণীর বা তার উপ-শ্রেণীর একটির নতুন উদাহরণ দেয়। কোনও কারখানা যা কোনও অভ্যন্তরীণ অবস্থা বজায় রাখে না প্রায়শই এই জাতীয় কারখানা-পদ্ধতিতে প্রতিস্থাপন করা যেতে পারে:
Widget widget = Widget.createColoredWidget(COLOR_RED); // returns an object of class RedColoredWidget
জাভা 8-এ একটি নতুন বৈশিষ্ট্য হ'ল মেথড রেফারেন্স যা আপনাকে স্টেটলেস কারখানার মতো করে যেমন পদ্ধতিতে পাশ কাটিয়ে দেয়। সুবিধার্থে, যে কোনও কিছু যা পদ্ধতির রেফারেন্স গ্রহণ করে তা যে কোনও বস্তু গ্রহণ করে যা একই কার্যকরী ইন্টারফেস প্রয়োগ করে, যা অভ্যন্তরীণ রাষ্ট্রের সাথে একটি পূর্ণাঙ্গ কারখানাও হতে পারে, সুতরাং যখন আপনি এমন করার কারণ দেখেন তখন আপনি সহজেই কারখানাগুলি চালু করতে পারেন।