プロトタイプパターンを使用するかどうか

質問があります。私は製品とやることを少し作り出す必要があります。今私は7種類の製品を言うことができます。いくつかは他のサブタイプである。

Cars
 - Vans
   - petrol
   - diesel
 - City
 - Hatchback
 - Saloon
 - Estate
   - petrol
   - diesel

議論のために、私の市、ハッチバック、サルーンの車はすべてハイブリッド/ガス/どんなものでも、私はガソリンとディーゼルを売る予定はない。しかし、将来私はガソリンとディーゼルのサルーンカーを持っている可能性がありますが、私は20種類以上の製品を持つつもりはありません。もしそれが上がるとすれば、私はたぶん2-3種類のタイプがあるでしょう。

From what I understand Prototype Pattern may be good one here for I will be able to avoid duplication between estate->petrol and van->petrol ... but then again Van cars will have different characteristics than say city car e.g. maximum loading dimensions.

私はデザインパターンについて幅広く読んできましたが、私が確かに覚えていることは、パターンが必要ないときにパターンを使用しないことです。今問題は - 私はそれを必要としますか?

ありがとう!

3

2 答え

車の種類ごとに異なる行動が必要ですか?ガソリン・バンはディーゼル・バンとは違う?サルーンは不動産とは異なる行動する必要がありますか?

私が正しく理解すれば、そのようなものが必要です

public enum FuelType
{
     Petrol,
     Diesel
}

public class Car
{
   public string Name {get;set;}
   public FuelType Fuel {get;set;}
}

public class Van:Car { } 
public class CityCar:Car { }

Vanの文字列がCarと異なる値である場合、サブクラス化は必要ありません。プロパティ値だけを変更する必要があります。たとえば、Vanには、サブクラス化の対象となるメソッドの他のプロパティまたは異なる実装が必要です。

1
追加された

デコレータパターンはおそらく最も単純なもので、具体的なオブジェクトの機能や特性を拡張するのに適しています。

Here is some light reading: Head First Design Patterns - CH3 pdf

参考までに、あなたの選択した言語に関係なく、カップルはデザインパターンを学習し、参照する必要があります:

1) Head First Design Patterns

2) Patterns for Enterprise Application Architecture

3) Design Patterns: Elements of Reusable Object-Oriented Software

そしてサイト:

1) DoFactory

2) StackOverflow Design Patterns Newbie

他にもいくつかありますが、私はそれらを掘り起こす必要があります。

1
追加された
あなたの答えをありがとう、しかし、私は非常に多くのランタイムで設定されるようにオブジェクトの機能を拡張したくないが、私はまっすぐな継承とは異なる方法でクラスをモデル化したい。
追加された 著者 RandomWhiteTrash,
関係なく、私はそれは貴重なリソースへの素晴らしいリンクを持っているため、この答えを受け入れる:)
追加された 著者 RandomWhiteTrash,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com