SORU
28 EKİM 2008, Salı


Nasıl birim test soyut sınıflar için: koçanları ile uzatmak?

Soyut sınıflar uzanan soyut sınıflar ve sınıflar ünite test etmek için nasıl merak ediyorum.

Uzanan, soyut yöntemler stubbing, ve sonra tüm beton test yöntemleri ile soyut sınıf test yapmalıyım? O zaman sadece ben geçersiz kılmak ve soyut Dersim taşan nesneler için birim testleri soyut yöntemler test yöntemlerini test?

Soyut sınıf yöntemleri test ve soyut sınıfını genişleten nesneler için test benim durumumda bu sınıf genişletmek için kullanılan soyut bir test durumda olması gerekir?

Soyut sınıfım bazı somut yöntemler olduğunu unutmayın.

CEVAP
1 HAZİRAN 2010, Salı


Hangi soyut temel sınıfları kullanılan iki yol vardır.

  1. Soyut bir nesne uzmanlaşmış, ama bütün müşteriler onun temel arayüzünden türetilmiş bir sınıf kullanır.

  2. Tasarım nesneleri içinde çoğaltma faktörü için soyut temel sınıf kullanıyorsanız ve müşterilerinin kendi arayüzleri ile. beton uygulamaları kullanın!


1 - Strateji Desen İçin Çözüm

Option1

Eğer ilk durum varsa, o zaman aslında türetilmiş sınıfları uyguladıklarını soyut sınıf içinde bir arabirim sanal yöntemlerle tanımlanmış.

Bu gerçek bir arabirim yapmak, beton için soyut sınıf değiştirmeyi düşünmelisiniz, ve kurucusu olarak bu arayüzü örneği. Türetilmiş sınıflar bu yeni arayüz uygulamaları olur.

IMotor

Bu şimdi daha önce soyut sınıf yeni arayüz her ne kadar temsili bir örneği kullanarak test edebilirsiniz anlamına gelir, ve şimdi ortak arabirim üzerinden her yeni uygulama. Her şey basit ve test edilebilir.


2 İçin Çözüm

Eğer ikinci durum varsa, o zaman soyut bir sınıf bir yardımcı sınıf olarak çalışıyor.

AbstractHelper

İşlevselliği içerir bir bak. Eğer herhangi bir bu tekrarını en aza indirmek için kullanılan nesneler üzerine itti. Eğer hala bir şeyler kaldı, somut uygulama kendi Kurucu ve temel sınıf kaldıran bir Yardımcı Sınıf hale bak.

Motor Helper

Bu daha basit olan beton sınıfları yol açar ve kolayca test edilebilir.


Bir Kural olarak

Karmaşık nesneleri basit bir ağ üzerinden basit nesnelerin karmaşık ağ iyilik.

Test edilebilir kod genişletilebilir anahtarı, yapı taşları ve bağımsız kablolama küçük.


Her iki karışımları işlemek için Nasıl? güncelleme :

Olası bir temel sınıf bu rollerin her iki sahne var... yani: halka açık bir arayüze sahiptir, ve yardımcı yöntemler korudu. Eğer durum buysa, o zaman bir sınıfa yardımcı yöntemleri (scenario2) faktör ve strateji bir kalıp içine miras ağacı dönüştürebilirsiniz.

Eğer sen bulmak zorundasın bazı yöntemler temel sınıf uygulayan, doğrudan ve diğer sanal, sonra hala dönüştürmek miras ağaca bir strateji desen, ama ben de alır gibi iyi bir göstergesi olduğu sorumlulukları olmayan düzgün hizalanmış ve yeniden düzenleme ihtiyacı olabilir.


Güncelleme 2 : bir basamak (2014/06/12) olarak Soyut Sınıflar

Soyut kullandım bir durum geçen gün vardı, neden araştırmak istiyorum.

Yapılandırma dosyaları için standart bir format var. Bu özel araç, tüm bu biçimde 3 yapılandırma dosyaları vardır. Her ayar için türü kesin belirlenmiş bir sınıf dosyasını istedim, bağımlılık enjeksiyon yoluyla, bir dersi bakım ayarları için sorabilirsiniz.

Bu aynı yöntemleri kullandığı ayarları dosya biçimleri ve türetilmiş sınıfları ayrıştırmak için nasıl biliyor soyut temel sınıf alarak bu hayata, ama ayar dosyasının yeri saklanmış.

Bir" 3 sınıflar sarılmış, ve sonra temel sınıf için veri erişim yöntemleri göstermek için verilmiş. "SettingsFileParser yazabilirdim Bunu yapmak için tercih ettihenüzdaha 3 türetilmiş sınıfları yol açacak gibiheyetbaşka bir şey daha bunları kod.

Ancak... bu kod geliştikçe ve bu ayarlar her bir sınıf tüketiciler netleşecek. Her ayarları kullanıcı ayarları için isteyin ve onları bir şekilde (ayarları metin olarak sayı vb onları dönüştürmek nesneleri sarıp olabilir.) dönüştürecek. Bu durumda olduğu gibi veri işleme yöntemleri bu mantık ayıklamak için Başlat ve geri türü kesin belirlenmiş ayarları sınıfları üzerine yerleştirin. Bu ayarları her biri için yüksek seviye arabirim götürecek, sonunda artık ile ilgili olduğunu bilmektedir "ayarlar".

Türü kesin belirlenmiş ayarları sınıflar artık gerekir bu noktada "temel açığa çıkaran yöntemler" ayarlar " uygulaması. alıcı

Bu noktada artık halk kendi arayüzü erişimci yöntemleri ayarları eklemek isterim; bu sınıf ayarları ayrıştırıcı bir sınıf saklanması için değiştirmek yerine onu elde edeceğim.

Soyut sınıf bu nedenle bana tasarımı daha sonra değiştirmek için bana hatırlatmak için şu an heyet kod ve kod içinde bir marker önlemek için bir yol. Hiç iyi bir süre yaşayabilir öyleyse, ben... sadece kod söyleyebilir.

Herhangi bir kural ile gerçek bu... "statik yöntemler" ya da "özel yöntemler" gibi. Kodda bir koku gösterir... ve bu iyi bir şey. Seni cevapsız soyutlama seyir devam ediyor... ve bu arada müşteriye değer sağlama üzerinde taşımak sağlar.

Bunun gibi kurallar sürdürülebilir kod vadilerde yaşadığı bir manzara, tanımlama sanırım. Yeni bir davranış ekleyin, kodunuzu yağmur iniş gibi. Başlangıçta iyi tasarım gücü vadilerde olacak kadar davranış itip kakmasına izin vermek yeniden Düzenle.. indiği yere koy.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Manuel Vizcaino

    Manuel Vizca

    27 Mayıs 2008
  • williamfitzsimmons

    williamfitzs

    14 Mart 2008
  • xiaoyu85

    xiaoyu85

    20 ŞUBAT 2010