SORU
5 ŞUBAT 2009, PERŞEMBE


C fabrika desen#: Nasıl bir nesne örneği sadece bir fabrika sınıfı tarafından oluşturulabilir sağlamak için?

Son zamanlarda benim kod bazı güvenliğini düşünüyordum. Bir nesneyi asla doğrudan oluşturulabilir tabii, ama bir fabrika sınıfı bazı yöntem üzerinden sadece yapmak nasıl merak ediyorum. Demek ben bir sınıf ve bu sınıfın her örneği geçerli bir iç devlet olacaktır emin olmak istiyorum. iş nesne ver bize Bunu başarmak için, bir nesnenin, muhtemelen onun kurucu oluşturmadan önce bazı kontrol gerçekleştirmek için ihtiyacım olacak. Bu onay iş mantığı bir parçası olmak istiyorum ben karar verene kadar her şey yolunda demektir. Nasıl benim iş sadece birkaç yöntem ile mantık sınıf ama asla doğrudan creatable ticari bir nesne ayarlayabilir miyim? Eski kullanan ilk doğal arzusu "" C C anahtar kelime ile kısa düşecek#. arkadaş Diğer seçeneklere ihtiyacımız var

Hadi biraz örnek deneyin:

public MyBusinessObjectClass
{
    public string MyProperty { get; private set; }

    public MyBoClass (string myProperty)
    {
        MyProperty = myProperty;
    }
}

public MyBusinessLogicClass
{
    public MyBusinessObjectClass CreateBusinessObject (string myProperty)
    {
        // Perform some check on myProperty

        if (true /* check is okay */)
            return new MyBusinessObjectClass (myProperty);

        return null;
    }
}

Hala MyBusinessObjectClass örneği doğrudan giriş kontrol etmeden oluşturabilirsiniz hatırladığın kadar önemli değil. Bu teknik imkanı tamamen çıkarmak istiyorum.

Toplum bu konuda ne düşünüyor?

CEVAP
5 ŞUBAT 2009, PERŞEMBE


Görünüşe göre sadece çalıştırmak istediğiniz bazı iş mantığı oluşturmadan önce nesne - acaba niye sadece oluşturmak statik bir yöntem içinde "BusinessClass" artık bütün kirli "free" denetimi iş ve yapıcı özel?

public BusinessClass
{
    public string MyProperty { get; private set; }

    private BusinessClass()
    {
    }

    private BusinessClass(string myProperty)
    {
        MyProperty = myProperty;
    }

    public static BusinessClass CreateObject(string myProperty)
    {
        // Perform some check on myProperty

        if (/* all ok */)
            return new BusinessClass(myProperty);

        return null;
    }
}

Oldukça basit olacaktır arama:

BusinessClass objBusiness = BusinessClass.CreateObject(someProperty);

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AmazonWireless

    AmazonWirele

    8 EYLÜL 2010
  • Associated Press

    Associated P

    18 EYLÜL 2006
  • TopOfTheTech

    TopOfTheTech

    5 NİSAN 2010