In Factory method
Muster gibt es 2 führen Umsetzung (korrigiert mich wenn ich falsch liege):Fabrikmethodenmuster - wann sollte die 'Creator'-Klasse die Factory-Methode implementieren?
Wenn Creator
Klasse abstract
sein und nicht eine Implementierung für die Factory method
Bereitstellung:
public abstract class CasinoGameCreator {
public void playGame() {
ICasinoGameType gameType = createGame();
gameType.play();
}
public abstract ICasinoGameType createGame();
Or, können wir die Creator
Klasse eine konkrete Klasse sein, die Implementierung für die Factory method
bereitstellt:
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;
}
}
}
Gibt es eine starke Präferenz für die Verwendung jeder Implementierung? Wenn ja, in welchen allgemeinen Situationen würden wir es vorziehen, den ersten Ansatz über den zweiten zu verwenden?
Ich glaube, Sie beziehen sich auf das [abstrakte Fabrikmuster] (https://dzone.com/articles/intro-design-patterns-abstract) und das [Fabrikmethodenmuster] (https://dzone.com/artikel/gof-design-patterns-factory-me). Mögliche Antworten auf Ihre Frage zu SO [finden Sie hier] (http://stackoverflow.com/questions/5739611/differences-between-abstract-factory-pattern-and-factory-method) – Tagc
Ihr zweites Beispiel ist kein [ Factory Method Pattern] (http://www.oodesign.com/factory-method-pattern.html), aber ein [Factory Pattern] (http://www.oodesign.com/factory-pattern.html). Wollten Sie eigentlich zwei verschiedene Muster vergleichen? Oder hast du falsch verstanden, was die beiden Optionen für Factory * Method * Pattern sind? – Andreas
@Andreas - Ich war mir sicher, dass sie das gleiche "Factory Method Pattern" sind, also denke ich, dass ich falsch verstanden habe, obwohl das zweite Beispiel von _Cracking the coding, 6th edition_ book übernommen wurde, also ist das für mich sehr seltsam ... – Nimrod