Ortak paylaşılan yöntemlerin nereye yerleştirileceği


9

Her yerde yaygın olarak kullanılan bir sürü yöntemim var. Şu anda kod dosyası, küresel oldukları gerçeğini temsil etmek için global olarak adlandırılıyor.

Ancak, bunu sevmiyorum.

Bunları bir sınıfa gruplamak ve bir arayüze geçmek istiyorum. Sadece bir örnek yapacağım, ama burada singleton tuzağına düşmüyorum.

Her şeyden önce, sınıfı ne adlandırmalıyım? Küresel isimlerden kaçınmak istiyorum çünkü koruyucular yanlış fikre sahip olacaklarından korkuyorum.

Ayrıca, davranışın değişebilmesi ve uyum sağlayabilmesi için böyle bir yöntem kümesini nasıl ayırmayı düşünmeliyim?

Yöntemler kümesi aşağıdakileri içerir:

  • Dönüşüm tabloları
  • Pano etkileşimi
  • Yerleşik yazı tiplerini yönetme
  • Ortak çizim yöntemleri
  • Sık kullanılan kaynaklara erişim sağlayan bir arabirim sağlama

Bunlar devleti kurtarmayan saf devlet yöntemleri gibi mi, devleti kurtarıyor mu?
TheLQ

Tekli tuzağa düşmediği için +1.
Caleb

@TheLQ Devleti mutlaka kaydetmezler, ancak kolaylık sağlamak için const verilerini (dönüşüm çizelgeleri gibi) tutarlar.
Lee Louviere

Yanıtlar:


4

Ad alanı olabilir [application].Common.Shared

Sınıflar şu şekilde adlandırılabilir:

ConversionLookup
ClipboardCommunication
FontManager
DrawingUtility

Sınıfları ayırırdım çünkü farklı şeyler yapıyormuş gibi geliyor.


1

Bir örnek yapacaksanız, hemen hemen bir singletonunuz var. Ayrıca, insanların tek bir tuzak hakkında konuşmaları durumunda normalde atıfta bulunacakları şey, tektonların küresel olması ve çoğu sınıfın küresel olmamasından daha iyidir. Yani bir singletonunuz da olabilir. Eğer bir arabirimi, onu aramak isteyebilecek nesnelere aktarabilirseniz, o zaman gerçekten küresel değildir.

Ayrıca, hepsini küresel yöntemlerden bir tanesine koymak, davranış değişikliğini ve uyarlamayı zorlaştırır, çünkü sadece bir yönteme yapılan her değişiklik yeni bir alt sınıfa ihtiyaç duymaz , aynı zamanda her değişiklik kombinasyonunun kendi alt sınıfına ihtiyacı vardır.

Gerçekten küresel olan her biri için teklitonlar (hepsinin kelimesini alacağım) ve size bir örnek veren bir kayıt defteri veya fabrika (arayüz tek başına ya da değil uygulayabileceğiniz anlamına gelir) söz vermeyin). Arayanların bakış açısından yaptıklarına göre isimlendiririm.


1

Normalde bu tür şeyleri kendi derleme adlarına "foo.Common" gibi bir şey "foo.Common.Collections" veya "foo.common.UI" vb. Gibi bir ad alanı altına koydum. Onlara ihtiyacım var.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.