オブジェクト指向のデザインパターンの勉強をしているのですが、
AbstractFactoryパターンとBuilderパターンの違いがいまいちわからないため、ご教示いただきたいです。
参考にしたサイト
https://www.ulsystems.co.jp/topics/028
https://www.techscore.com/tech/DesignPattern/Builder.html/
https://www.techscore.com/tech/DesignPattern/AbstractFactory.html/
どちらも、抽象クラス/インターフェイスを介することで、利用側は具体的な実装を知らなくて良いというデザインパターンだという理解をしています。
それぞれの説明には納得はいくものの、
| AbstractFactoryパターン | Builderパターン |
|---|---|
| Client | Director |
| AbstractFactory | Builder |
| ConcreteFactory | ConcreteBuilder |
これって同じなのでは?この2つのパターンは何が違うの・・・?とモヤモヤしています。
https://www.techscore.com/tech/DesignPattern/AbstractFactory.html/#dp8-3
と
https://www.techscore.com/tech/DesignPattern/Builder.html/
を見比べてもだめですか?
はい...。
AbstractFactoryクラスはBuilderインターフェイスであり、
MizutakiFactoryクラスはSaltWaterBuilderクラスであり、
SampleClassクラスはDirectorクラスであり、、、
と変わらないように見えてしまっています。
この2つの決定的な違いは何でしょうか?
妄想込み(趣味でやっているので)ですが、「視点の違い」なのでは?
例えばStateパターンとStrategyパターンは概要は似ていますが、Stateパターンでは「状態」に着目し、Strategyパターンは「アルゴリズム」に着目している...らしいです。
そういう風に、「視点の差」なのだと思います。
例えばAbstractFactoryパターンは「生成方法」、Buiderパターンは「複雑な生成手順を一気に引き受ける」的な。
http://marupeke296.com/DP_main.html を参考にしてみました。
回答2件
あなたの回答
tips
プレビュー