3

コードをより整理するために、流暢なインターフェイスを使用することにしました。ただし、利用可能なチュートリアルを読むことで、そのような流暢さを実装する多くの方法を見つけました。その中に、FluentInterfaceを作成Interfacesするには .

Fluent APIを実装する方法は次のとおりです

コード

public class Person
{
    public string Name { get; private set; }
    public int Age { get; private set; }

    public static Person CreateNew()
    {
        return new Person();
    }

    public Person WithName(string name)
    {
        Name = name;
        return this;
    }

    public Person WithAge(int age)
    {
        Age = age;
        return this;
    }
}

コードの使用

Person person = Person.CreateNew().WithName("John").WithAge(21);

ただし、より効果的な方法で Fluent API を作成するためにインターフェイスをどのように関与させることができますか?

4

1 に答える 1

11

interface呼び出しのシーケンスを制御したい場合は、流暢な API を使用して実装することをお勧めします。あなたの例では、名前が設定されているときに、年齢の設定も許可したいとします。それに加えて、この変更も保存する必要があると仮定しましょう。ただし、年齢が設定された後でのみです。これを実現するには、インターフェイスを使用し、それらを戻り値の型として使用する必要があります。例を参照してください:

public interface IName
{
    IAge WithName(string name);
}

public interface IAge
{
    IPersist WithAge(int age);
}

public interface IPersist
{
    void Save();
}

public class Person : IName, IAge, IPersist
{
    public string Name { get; private set; }
    public int Age { get; private set; }

    private Person(){}

    public static IName Create()
    {
         return new Person();
    }
    public IAge WithName(string name)
    {
        Name = name;
        return this;
    }

    public IPersist WithAge(int age)
    {
        Age = age;
        return this;
    }

    public void Save()
    {
        // save changes here
    }
}

ただし、特定のケースに適している/必要な場合は、このアプローチに従ってください。

于 2013-07-23T03:34:28.450 に答える