デザインパターンの単純そうな質問
■ このスレッドは過去ログ倉庫に格納されています
0286デフォルトの名無しさん
NGNG>「フレームワークはその識別子をパラメータとして Create オペレーションを呼び出す。」
は、まんまParameterized Factory Methodのところの文だね。
ちゅーことは、>>285の言うとおり、つか、そこのサンプルコードの通り、
Product* Creator::Create (ProductId id);
つーことだろう。
>Creator の Create() だとした場合、Creator が識別子について
>一元管理していないといけないので Creator を
>具象クラスとして作成(Creator を一切継承しない)した方がいいのでしょうか?
GoF本では、一元管理できるのがメリットだって説明されてると思う。
それから、Creatorは識別子とConcreteProductクラスの対応は、Creator クラス
にデフォルトの実装を与えて、必要ならオーバーライドしれ、って書いてあるようだ。
だから、具象クラスはフレームワークとして用意して、具体的なアプリケーションの
実装時にはCreate()をオーバーライドする(ってことは当然サブクラスを派生する)
っていうのがGoF本に書いてあることだと思う。
(ここでいうフレームワークは、GoF本で図形編集のフレームワークって書いてあるそれね)
Parameterized Factory Methodは、あくまで、*Factory Methodの変形*として
解説されているので、違いに注意して読んだほうがいいかも。
とくに、Factory Methodが実装時のフレームワークなのに対して、
Parameterized Factory Methodは、実行時に複数のConcreteProductオブジェクトを
生成する拡張が入ってるところとか。
どでしょ?
■ このスレッドは過去ログ倉庫に格納されています