2013-04-25 20 views
5

Fabrika modelini kullanırken, fabrika mantıksal doğrulama mantığı içeriyor mu veya bağlam verilerinin iletilmesinden önce doğrulama işlemine bakmak için arama sınıflarına bırakılmalı mı?Fabrika modelinde doğrulama mantığı var mı

Basit bir fabrika yöntemine sahibim, ancak hangi nesneyi başlatılacağına karar vermek için ona geçirilen bir yapılandırma ağacına güveniyor.

Yapılandırma xml'in iyi biçimlendirilmiş olabileceği ancak fabrikada beklediği doğru formatta olmayan ve bunun doğrulanması gereken yeri bilmediğim bir durum olabilir.

+2

Geçilen yapılandırma geçerli değilse, fabrikanız bir istisna atmalıdır. – Lucas

+0

Bu soruya bir göz atın: http://stackoverflow.com/questions/11820127/how-to-handle-a-lot-of-validation-checks-necessary-before-creating-a-object ve kararınız ne olursa olsun, tüm doğrulama kodunu tek bir yere koyun. –

cevap

1

Neden ikisi de sunmuyor? Bununla, sorumluluğu girişinin onaylanmasını isteyip istemediğini arayan kişiye iletirsiniz.

Apaçi Commons Bu örneği alın - InstantiateFactory:

InstantiateFactory (java.lang.Class classToInstantiate)

Oluşturucu hayır gerçekleştirir:

Onun varsayılan kurucular hiçbir doğrulama sunuyoruz doğrulama.

Ancak

getInstance doğrulama sunmaktadır:

statik Factory getInstance (java.lang.Class classToInstantiate, java.lang.Class [] paramTypes, java.lang.Object [] args)

fabrika yapılandırması, doğrulama gerçekleştirir.

0

fabrika kalıbı kullanarak gerektiği itsel doğrulama mantığını içeren veya bağlam verilerini geçirmeden önce doğrulama dikkat çekmek için çağrı sınıflarına kadar bırakılmalıdır fabrikası mı? Ayrı bir doğrulama yöntemi Validate(Config) vardır

  1. Doğrulama ayrı bir işlemde

olarak:

doğrulama düzenlemek için iki farklı alternatifler vardır. Bu yöntem, yapım yönteminden önce çağrılır ve Config'un geçerli olup olmadığını döndürür. Validate yöntemi, Config'un geçerli olduğunu döndürürse, yapım yöntemi çağrılır. İnşaat sürecinde herhangi bir hata bir istisna olarak kabul edilir.

    inşaat süreci

ayrı bir doğrulama yöntemi yoktur bir parçası olarak

  • Doğrulama. Bunun yerine, gerektiğinde yapım yönteminde doğrulama gerçekleşir.yapı yönteminin başarısız olmasına ve oluşturulmuş bir nesneyi veya bir hatayı belirten bir sonucu döndürmesine izin verilir.

    İkinci varyant, neredeyse sıfır kod ve performans ek yüküne sahip monad'ler kullanılarak güzel bir şekilde uygulanabilir.

  • 1

    Doğrulama ile ne demek istiyorsun? Peki, fabrika tasarım modelinin bir örneğinin bir parçası olan kodun başka herhangi bir koddan farklı olduğunu düşündüren nedir?

    doğrulama ederek kullanıcı veya bir giriş dosyasından okunan girdi değerlerinin kontrol demek, bu sorunun cevabı hayır geçerli: giriş ayrıştırma için kod doğrulama sonradan okuma değerlerini kullanır, bir fabrika sorumludur.

    Doğrulama ile, Fabrika kontrolünün fabrika yöntemlerinin, arayanların bu yöntemlerin ön koşullarına uyan değerler sağladığını kontrol etmesi anlamına gelirse, yanıt, argümanlarında önkoşullar getiren başka herhangi bir yöntemle aynıdır: Java için fikir birliği, önkoşulları yerine getirme ve önkoşullar yerine getirilmemişse uygun RuntimeExceptions atma yöntemleri içindir.