2リード実装(私が間違っているなら、私を修正)があります。ファクトリメソッドのパターン - 「作成者」クラスはいつFactoryメソッドを実装する必要がありますか? <code>Factory method</code>パターンでは
Creator
クラスはabstract
であるとFactory method
のための実装を提供していないとき:
public abstract class CasinoGameCreator {
public void playGame() {
ICasinoGameType gameType = createGame();
gameType.play();
}
public abstract ICasinoGameType createGame();
かをの場合、クラスは、Factory method
の実装を提供する具体的なクラスにすることができます。
public class CasinoGame {
public static CasinoGame createGame(GameType type) {
if (type == GameType.BlackJack) {
return new BlackJackGame();
} else if (type == GameType.Poker) {
return new PokerGame();
} else {
return null;
}
}
}
各実装を使用する際には、どんな強みがありますか?もしあれば、どのような一般的な状況で私たちは第2アプローチよりも第1アプローチを好むだろうか?
[抽象ファクトリパターン](https://dzone.com/articles/intro-design-patterns-abstract)と[ファクトリメソッドパターン](https://dzone.com)を参照していると思います/ articles/gof-design-patterns-factory-me)を参照してください。あなたの質問に対する可能な答えはここにあります[http://stackoverflow.com/questions/5739611/differences-between-abstract-factory-pattern-and-factory-method] – Tagc
あなたの2番目の例は[ Factory Pattern](http://www.oodesign.com/factory-method-pattern.html)であるが、[Factory Pattern](http://www.oodesign.com/factory-pattern.html)である。あなたは実際に2つの異なるパターンを比較しようとしましたか?あるいは、Factory * Method * Patternの2つのオプションが何であるか誤解しましたか? – Andreas
@アンドレアス - 私は彼らが同じ「ファクトリメソッドパターン」であると確信していたので、私は誤解を招いていると思いますが、第2の例はコーディングの第6版を取りました。 – Nimrod