私はコンセプトと混同していますか?コンストラクタの代わりにオブジェクトを返す静的メソッドを組み込むのと同じくらい簡単ですか?そのため、クライアントがライブラリを更新している間にコードを変更する必要はありませんか、それ以上のことがありますか?ファクトリー・メソッド・メソッドのパターンを正確には何が記述できますか?
答えて
書籍Head First Design Patternsは、Javaのための明確なガイドになります。それは素晴らしい本です。私の答えがStack Overflow Questionであることを確認したらArbitraryPointFactoryクラスの実装がFactory Method patternを使用するPoint Exampleコードと、Point Factoryクラスに表示されているAbstract Factory patternとどのように異なるのかを確認することができます。この答えはC#のコードサンプルで示されていますが、使用法を説明するために使用しているデザインパターン言語は、あなたに答えを保証するものです。
あなたの質問で考えているのは、まったくデザインパターンではありません。インスタンス化をカプセル化するオブジェクトを返すこの静的メソッドは、Wikiページに表示されるようにSimple Factoryとして知られています。 Factory Method
パターンは、インタフェースを介して返される型をある程度抽象化します。これは通常、factory method
クラスの唯一の仕事が、返されるインターフェイスを実装する1つのconcrete
クラスのオブジェクトの作成を制御することで行われます。 Abstract Factory
は、関連製品のグループのカプセル化を提供します。私の例では、さまざまなタイプのポイントを表示していましたが、異なるインターフェイスを実装でき、すべて同じものを使用しますAbstract Factory
。
アイデアは、実装ではなくインターフェイスにプログラミングすることです。真のファクトリは、アプリケーション内の単一の場所に作成ロジックを引き込み、インターフェイスを介してインスタンス化をカプセル化します。
- 1. ファクトリー・パターン:子メソッドへのアクセス
- 2. UIViewオブジェクトのdrawRect:メソッドは正確に何をしますか?
- 3. CompositionContainer.ComposeExportedValueメソッドは正確に何をしますか?
- 4. C#、長いメソッドまたは短いメソッドを記述していますか?
- 5. 一般的な匿名メソッドはどのように記述できますか?
- 6. Consoleの拡張メソッドを記述することはできますか?
- 7. XAttributeとXElementのメソッドを記述することはできますか?
- 8. laravelのisValidメソッドは正確に何ですか?
- 9. getInstanceメソッドのJavadocの記述方法は?
- 10. JavaでのInsertInOrderメソッドの記述方法?
- 11. 正確に何+ [NSURLProtocolのsetProperty:forKey:inRequest:]メソッド以下
- 12. 戻り値の型がvoidのメソッドは正確に何を返しますか?
- 13. EnvDTEのDebugger.GetExpressionメソッドでは、 "UseAutoExpandRules"は正確に何を意味しますか?
- 14. 戻り値はブール値のメソッドで正確に何をしますか?
- 15. jQuery on()メソッドのジャスミンテストケースの記述方法
- 16. トランザクションログには正確に何が記録されますか?
- 17. 正規表現のパターンを記述する正規表現ですか?
- 18. clone()メソッドで何ができますか?
- 19. flinkのreadFileメソッドでFileInputFormatを記述する方法は?
- 20. なぜコードはString.classのindexOf()メソッドをこのように記述しますか?
- 21. 正確getViewメソッド
- 22. このメソッドをJavaでどのように記述しますか?
- 23. djangoでフォームの保存メソッドをどのように記述しますか?
- 24. JSP内でメソッドを記述して呼び出す方法は?
- 25. "public"、 "private"および "protected"メソッドは何を*正確に*行いますか?
- 26. MSレポートの埋め込みメソッドはどこで記述しますか?
- 27. AEMフォームのclientValidation.jspに制約メソッドを記述する
- 28. JSのredirectメソッドでresponse.urlを記述する安全な代替方法は何ですか?
- 29. すべてのpythonメソッドが実際に非データ記述子である場合、メソッド.__ get__を上書きできますか?
- 30. Djangoでは、jsonファイルのURLパターンをどのように記述しますか?
いくつかのコード例を書いて、もっと詳しく説明できますか? –
答えは、 'new X()'を実行すると、具体的なクラス 'X'のインスタンスが確実に得られます。ファクトリメソッド 'X.newInstance()'は実装の自由度があり、 'X'のサブクラスを作成します。例えば'public X newInstance(){if(return(Environment.isDebug())?new DebuggingX():new X())' - しかし、どこでもパターンが議論されています。 https://en.wikipedia.org/wiki/Factory_method_patternまたはOOパターンに関する書籍。 – slim