読者です 読者をやめる 読者になる 読者になる

KICK THE DP

KICK THE CAN CREWでデザインパターンを攻略するブログ

Ch.4 KICK THE FACTORY METHOD

【目標】

Factory Methodパターンを使って、ヒップホップとR&Bの曲を作ろう

【クラス図】

f:id:mikeera2:20160905170611p:plain

【実装】

<Song抽象クラス:Product>

f:id:mikeera2:20160921223115p:plain

<Project抽象クラス:Creator>

f:id:mikeera2:20160921223523p:plain

f:id:mikeera2:20160921223525p:plain

≪HipHopSongクラス:ConcreteProduct≫

f:id:mikeera2:20160921223811p:plain

≪HioHopProjectクラス:ConcreteCreator≫

f:id:mikeera2:20160921224140p:plain

f:id:mikeera2:20160921224149p:plain

≪RAndBSongクラス:ConcreteProduct≫

 f:id:mikeera2:20160921224355p:plain

≪RAndBProjectクラス≫

f:id:mikeera2:20160921224746p:plain

f:id:mikeera2:20160921224756p:plain

[Mainクラス]

f:id:mikeera2:20160921224912p:plain

【出力結果】

f:id:mikeera2:20160921224954p:plain

【メモ】

・こっちではprotectedを使っているのは何故だ

・これも結城センセのソースに則って、名前空間フレームワーク側と実装側に分けているが、必ずしも必要ではない気がする

・Factory Methodパターンつってんのに、なぜFactoryではなくCreatorなのか

・コンストラクタの中にCreate()の役目を実装してしまうのは避けた方がよいのだろう。コンストラクタでは基本的には代入のみを行うようにする。