Ancak, Liskov'un Değiştirme İlkesinin uygulanacağına güvendiğiniz sürece, neden geçersiz kılınmasına izin vermeyesiniz?
Örneğin, bir algoritmanın iskelet uygulamasının düzeltilmesini ve yalnızca belirli parçaların alt sınıflar tarafından (yeniden) tanımlanmasını istiyorum. Bu, Şablon Yöntemi kalıbı olarak bilinir (aşağıda benim tarafımdan vurgu):
Şablon yöntemi böylece görev semantiğinin daha büyük resmini ve seçim ve yöntem sırasının daha rafine uygulama ayrıntılarını yönetir. Bu daha büyük resim, mevcut görev için soyut ve soyut olmayan yöntemleri çağırır. Soyut olmayan yöntemler tamamen şablon yöntemi tarafından kontrol edilir, ancak alt sınıflarda uygulanan soyut yöntemler, desenin ifade gücünü ve serbestlik derecesini sağlar. Soyut yöntemlerin bir kısmı veya tamamı, bir alt sınıfta uzmanlaşarak alt sınıfın yazarının daha büyük anlambilimde minimum değişikliklerle belirli davranışlar sağlamasına izin verebilir. Şablon yöntemi (soyut olmayan), bu modelde değişmeden kalır ve alt soyut olmayan yöntemlerin ve soyut yöntemlerin başlangıçta amaçlanan sırada çağrılmasını sağlar.
Güncelleme
Üzerinde çalıştığım projelerin somut örnekleri:
- çeşitli "ekranlar" aracılığıyla eski bir ana bilgisayar sistemiyle iletişim kurmak. Her ekran, belirli veri bitleri içeren sabit ad, konum ve uzunlukta bir grup alana sahiptir. Bir istek, belirli alanları belirli verilerle doldurur. Yanıt, bir veya daha fazla alandaki verileri döndürür. Her işlem aynı temel mantığı takip eder, ancak ayrıntılar her ekranda farklıdır. Şablon işleme mantığını, ekran işleme mantığının sabit iskeletini uygulamak için uygularken, alt sınıfların ekrana özgü ayrıntıları tanımlamasına izin verdik.
- DB tablolarındaki yapılandırma verilerini Excel dosyalarına / dosyalarından verme / alma. Yine, bir Excel dosyasını işlemenin ve DB kayıtlarını eklemenin / güncellemenin veya kayıtları Excel'e boşaltmanın temel şeması her tablo için aynıdır, ancak her tablonun ayrıntıları farklıdır. Şablon Şablonu, kod kopyalarını ortadan kaldırmak ve kodun anlaşılmasını ve bakımını kolaylaştırmak için çok açık bir seçimdir.
- PDF belgeleri oluşturma. Her belge aynı yapıya sahiptir, ancak içeriği birçok faktöre bağlı olarak her seferinde farklıdır. Şablon Yöntemi yine, üretim algoritmasının sabit iskeletini duruma özgü, değiştirilebilir ayrıntılardan ayırmayı kolaylaştırır. Aslında. belgenin her biri sıfır veya daha fazla alandan oluşan birkaç bölümden oluştuğu için burada birden çok düzeyde de geçerlidir . Şablon Yöntemi burada 3 farklı seviyede uygulanmaktadır.
İlk iki durumda, orijinal eski uygulama Strateji'yi kullandı ve elbette yıllar boyunca burada ve orada küçük farklılıklar kazandıran çok sayıda çoğaltılmış kodla sonuçlandı, çok sayıda çoğaltılmış veya biraz farklı hatalar içeriyordu ve bakımı çok zordu. Şablon Yöntemi'ne (ve Java ek açıklamalarını kullanmak gibi diğer bazı geliştirmelere) yeniden odaklanmak, kod boyutunu yaklaşık% 40-70 oranında azalttı.
Bunlar sadece aklıma gelen en son örnekler. Şimdiye kadar üzerinde çalıştığım hemen hemen her projeden daha fazla örnek verebilirim.