سؤال

أنا بصدد إنشاء بعض الواجهات الطيلة لبعض الأشياء البسيطة التي ألعبها معها. شيء واحد لاحظته هو أن لدي الكثير من الأشياء المختلفة التي يتم إنشاؤها.

على سبيل المثال بالنظر إلى البيانات أدناه:

Check.Assertion.ForValue.That(value, "value").IsNotNull() : void

Check.Assertion.ForArgument.That(value, "value").IsNotNull() : void

Validate.Assertion.ForDate.That("Test").IsNotNull() : bool

Validate.Assertion.ForNumeric.That("Test").IsNotNull() : bool

لكل '.' (اقبل آخر واحد) أنا جديد كائن. إذا لم أكن أستخدم واجهة بطلاقة هنا، فسأي فقط استخدام الطرق الثابتة.

ما أتساءله هو ما إذا كان أي شخص يعرف أين يلاحظ المرء أي فرق حقيقي في الأداء عند استخدام هذا العدد من الكائنات المثلية (لاحظ أنهم كائنات صغيرة جدا) كما هو الحال في العمل مع الأساليب الثابتة.

هتاف أنتوني

هل كانت مفيدة؟

المحلول

لاحظ أنك لا تحتاج بالضرورة إلى إنشاء كائنات جديدة في كل مكان. قد تحل فقط معظم الواجهة بطلاقة من خلال الواجهات، وتقوم فقط بتنفيذ الكثير من الواجهات على كائن واحد. في هذه الحالة يمكنك العودة فقط this, ، فقط من خلال واجهة جديدة.

مثال:

public interface ICheckAssertionForValue
{
    ICheckAssertionForValueThat That(Object value, String name);
}

public interface ICheckAssertion
{
    ICheckAssertionForValue ForValue { get; }
}

public class Check : ICheckAssertion
{
    public static ICheckAssertion Assertion
    {
        get { return new Check(); }
    }

    ICheckAssertionForValue ICheckAssertion.ForValue
    {
        get { return this; } // <-- no new object here
    }

    ICheckAssertionForValueThat ICheckAssertionForValue.That(Object value, String name)
    {
        return new SomeOtherObject(value, name);
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top