Prototip desen kullanın veya değil

Bir sorum var. Ürünlerle ilgili küçük bir şey yapmam gerek. Şimdi 7 farklı türde ürün söyleyebilirim. Bazıları diğerlerinin alt türleridir.

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

Şimdi, argüman uğruna tüm şehirim, Hatchback ve Sedan otomobilleri hibrit/gaz/her ne ise ve ben benzinli ve dizel olanları satmayı planlamıyorum. Bununla birlikte, gelecekte bir zamanlar benzinli ve dizel motorlu araçlara sahip olma ihtimalim var, ama 20'den fazla ürün türüne sahip olmayacağım gibi. Eğer yukarı çıkacaksa muhtemelen 2-3 tane daha olacak.

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.

Tasarım kalıpları hakkında kapsamlı bir şekilde okuyordum ve hatırladığım bir şey, ihtiyacınız olmadığında deseni kullanmamak. Şimdi soru şu - buna ihtiyacım var mı?

Teşekkürler!

3

2 cevap

Her araba türü farklı davranışlar gerektirir mi? Benzinli bir kamyonet dizel kamyonetinden farklı mı? Bir Salonun bir Emlak'dan farklı olarak davranması olmalı mı?

Doğru anlarsam, böyle bir şeye ihtiyacın var.

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 { }

Bir Van'ın karakteristik özellikleri bir arabadan farklı değerlerse, alt sınıflamaya ihtiyacınız yoktur, sadece bir özellik değerini değiştirmeniz gerekir. Örneğin bir Van, alt sınıflandırma için uygun olacak başka özelliklere veya farklı yöntemlere sahip olmalıdır.

1
katma

Dekoratör Paterni, muhtemelen kullanılacak en doğru düzlemdir ve beton nesnelerinin işlevselliğini ve/veya özelliklerini genişletmek için iyi bir seçenektir.

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

FYI, çift, seçim dilinize bakılmaksızın tasarım desenlerini öğrenmek ve referans almak zorundadır:

1) Head First Design Patterns

2) Patterns for Enterprise Application Architecture

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

Ve siteler:

1) DoFactory

2) StackOverflow Design Patterns Newbie

Birkaç tane daha var, onları kazmam gerekecek.

1
katma
Cevabınız için teşekkürler, ancak çalışma zamanı boyunca oldukça fazla olacak şekilde nesnenin işlevselliğini genişletmek istemiyorum, ancak sınıfları düz mirastan farklı olacak şekilde modellemek istiyorum.
katma yazar RandomWhiteTrash, kaynak
Ne olursa olsun bu cevabı kabul ediyorum çünkü değerli kaynaklara güzel bağlantılar var :)
katma yazar RandomWhiteTrash, kaynak