2010-02-02 3 views
14

मैं बिल्कुल याद नहीं है कि यह एक आम पैटर्न है, लेकिन मैं एक वर्ग (फैक्टरी विधि पैटर्न) जो अन्य वर्गों (सार फैक्टरी पैटर्न) enum पैरामीटर के आधार पर बनाने के लिए विधि है है:कक्षा के लिए एक अच्छा नाम क्या है जो कारखानों का निर्माण करता है? (FooFactoryFactory मूर्खतापूर्ण लगता है imo)

public class FooFactoryFactory { 
    public FooFactory createFactory (FooFactoryType type) { 
     switch (type) { 
     case AFoo: 
      return new AFooFactory(); 
      break; 
     case BFoo: 
      return new BFooFactory(); 
      break; 
     default: 
      throw new RuntimeException ("..."); 
     } 
    } 
} 

public interface FooFactory { 
    Foo createFoo(); 
    FooItem createFooItem(); 
} 

FooFactory में कई कार्यान्वयन के साथ-साथ फू इंटरफ़ेस और FooItem इंटरफ़ेस (सामान्य सार फैक्टरी पैटर्न) है।

तो, FooFactoryFactory का नाम कैसे बदलें?

शायद, FooFactoryCreator? (इस सवाल को लिखने के दौरान इस नाम के बारे में सोचें)। IMHO यह अच्छा है, आप कैसे सोचते हैं?

+0

फू सेनानियों .. –

+1

'FooFactoryFactory' मूर्खतापूर्ण लग सकता है, लेकिन मुझे लगता है कि यह स्पष्ट रूप से संचार करता है कि यह क्या है। उम्मीद है कि आपको कभी भी 'FooFactoryFactoryFactory' की आवश्यकता नहीं है :-) –

उत्तर

15
  • FooFactoryCreator
  • FooFactoryProvider

लेकिन आप अपने कारखानों के लिए, कहते हैं, बिल्डरों का नाम बदलना चाहते हो सकता है। javax.xml.parsers.DocumentBuilderFactory पर एक नज़र है, जो DocumentBuilder उदाहरणों procudes, जो बारी में DocumentBuilderFactory उदाहरण में देख रहे हैं Document रों

उत्पादन ले लो, एक और विकल्प उठता है:

  • है एक सार FooFactory
  • वहाँ एक static newInstance() विधि बनाने के (पैरामीटर के साथ)
  • newInstance()FooFactory
012 के उचित कार्यान्वयन को वापस करने दें
+4

+1: अच्छे सुझाव और विकल्प। मैं खुद को तुरंत 'मदरफू फैक्ट्री' के बारे में सोच रहा था :) – BalusC

+3

'मां' सम्मेलन वह है जिसे मैं अगली बार उपयोग कर रहा हूं :) – Bozho

+2

सहमत समाधान, केवल टिप्पणी सावधानी का एक शब्द है कि केवल दुर्लभ उदाहरणों में ही "कारखानों का कारखाना" वास्तव में एक आवश्यक डिजाइन है। यह दृढ़ लगता है, और मुझे आश्चर्य होगा अगर समस्या के लिए आवेदन करने के लिए एक और अधिक सुरुचिपूर्ण पैटर्न नहीं था। केस-इन-पॉइंट, दस्तावेज़बिल्डर फ़ैक्टरी का अक्सर दुरुपयोग किया जाता है (विशेष रूप से थ्रेड सुरक्षा परिप्रेक्ष्य से), कि मैं तुरंत इसके किसी भी कोड से पूछता हूं जिसकी तुलना इसकी तुलना की जा सकती है। –

4

Creating and Destroying Java Objects: Part 1 में, लेखक सुझाव देते हैं, "स्थिर कारखाने के तरीकों का एक लाभ यह है कि, रचनाकारों के विपरीत, उनके नाम हैं।" - Joshua Bloch। आपको लेख से कुछ विचार मिल सकते हैं।

+0

बहुत अच्छा लेख! – Roman