5

Tôi đang trong quá trình tạo một số giao diện thông thạo cho một số công cụ xác thực đơn giản mà tôi đang phát xung quanh. Một điều mà tôi đã nhận thấy là tôi có nhiều đối tượng khác nhau được tạo ra.Giao diện thông thạo - số lượng đối tượng được tạo

Ví dụ cho những điều khoản dưới đây:

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 

cho mỗi '' (chấp nhận cho người cuối cùng) Tôi đang làm mới một đối tượng. Nếu tôi không sử dụng giao diện thông thạo ở đây, tôi sẽ chỉ sử dụng các phương thức tĩnh. Những gì tôi đang tự hỏi là nếu có ai biết nơi nào sẽ nhận thấy bất kỳ sự khác biệt thực sự nào về hiệu suất khi sử dụng số đối tượng thể hiện này (lưu ý chúng là những đối tượng khá nhỏ) như appose để làm việc với các phương thức tĩnh.

Cheers Anthony

Trả lời

9

Lưu ý rằng bạn không nhất thiết cần phải xây dựng các đối tượng mới ở khắp mọi nơi. Bạn chỉ có thể giải quyết hầu hết giao diện thông thạo thông qua giao diện và chỉ thực hiện rất nhiều giao diện trên một đối tượng. Trong trường hợp đó, bạn chỉ có thể trả lại this, chỉ thông qua một giao diện mới.

Ví dụ:

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); 
    } 
} 
+0

Hey mát Tôi đã không nghĩ về điều đó ... Chỉ cần một điều nhanh chóng, nơi chúng tôi đang trở về một đối tượng SomeOtherObject mới trong phương pháp đó, có thể chúng ta không được kiểm tra để thực hiện ICheckAssertionForValueThat giao diện và chỉ cần trả lại này một lần nữa? Tôi đoán nó đi xuống đến bao nhiêu trách nhiệm nên đi vào một lớp duy nhất khi thiết kế một giao diện thông thạo. Có lẽ câu trả lời là, nếu tôi không làm nó trôi chảy thì tất cả sẽ ở trong cùng một lớp ... bạn nghĩ sao? –

+0

Hoặc tôi lo lắng quá nhiều về việc tạo các đối tượng mới? Điều duy nhất là tôi sẽ sử dụng giao diện này một chút (ví dụ: để kiểm tra xem các tham số trên các phương thức khác nhau có null hay không và nếu có thì ném ngoại lệ) –