こんにちは、最近オブジェクト指向設計の勉強を始めたばかりの者です。
今のところプログラム言語についてはPHPしか知らないので、回答例などをいただける場合はPHPのコードを示していただけるとありがたいです。(でも、Javaのコードもなんとなく読めます。)
デザインパターンについての質問です。次の疑似コードはAbstractFactoryパターンの概念の説明のためにとあるサイトに載っていたものです。
interface C{}
class A implement C {}
class Z implement C {}
abstract class CFactory{
abstract C newInstance();
}
class AFactory extends CFactory{
C newInstance(){
return new A():
}
}
class ZFactory extends CFactory{
C newInstance(){
return new Z():
}
}
class B {
method(){
C = CFactory.newInstance();
}
}
私が理解しているのは、「クラスAまたはZを使うクラスBが、使うクラスのインスタンス化をクラスCFactoryに丸投げすることで、クラスAまたはZへの依存度を下げている」というところまでです。
そこで、この疑似コードに関する質問ですが、
1.クラスBがクラスAまたはZのインスタンスを得るためにコールしているクラスCFactoryのnewInstance()メソッドですが、これはCFactoryをnewしていない(できない)以上、スタティックメソッドと考えていいのでしょうか?しかもこれは抽象メソッドですが直接コールすることができるのでしょうか?
2.この例では結局インスタンス化されるのはクラスAですか?それともクラスZですか?また、その選択のロジックはどこに書かれている(または、書かれるべき)でしょうか?
ファクトリパターンの勉強をしようと思って、ネットであれこれ調べてみても概念を説明する疑似コードや図は見つかるのですが、具体的な実装については未だに理解できません。
ご教授のほどよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/01 05:26
2016/02/01 10:00
2016/02/01 14:11
2016/02/01 14:50
2016/02/01 15:41