3

我需要构建一个使用方法链接的类。我理解方法链的概念。例子:

class Company
{
    private String companyName;
    public setCompanyName(String companyName)
    {
        this.companyName = companyName;
        return this;
    }

    public Person addPerson(String name)
    {
         person = new Person();
         person.setName(name);

         return person;
    }
}

class Person
{
    private String name;
    private String address;
    private bool license

    public Person setName(String name)
    {
        this.name = name;
        return this;
    }

    public Person hasDriverLicense(bool license)
    {
        this.license = license;
        return this;
    }

    public Person setAddress(String address)
    {
        this.address = address;
        return this;
    }
}

//in some other class / method i do:
Company company = new Company()
.setCompanyName("SomeCompany")
.addPerson("Mike")
.setAddress("Street 118");

但我需要更进一步。我需要能够做到这一点:

Company company = new Company()
.setCompanyName("SomeCompany")
.addPerson("Mike")
.setAddress("Street 118");
.addPerson("Jane")
.setAddress("Street 342");
.hasDriverLicense(true)

所以你可以看到我需要能够继续链接。该方法addAddress并不总是链中的最后一个方法。它可以是Person类中的任何方法。

有没有实现此功能的好方法?也许有方法扩展之类的?

非常感谢任何帮助/示例。

4

1 回答 1

3

可以做到。这并不意味着您应该

Person 和 Company 的方法应该简单地返回一个在上下文中聚合个人和公司的对象。如果您有 IPerson 接口和 ICompany 接口,则此类型将实现两者,在内部保存对两者的引用,并将适当地分派调用。(对 IPerson 方法的调用将委托给内部 IPerson)。

话虽如此,我强烈劝阻你不要走这条路。它令人困惑,很难调试并且违反了基本的 OO 原则(例如接口隔离)。

于 2012-08-30T14:00:06.993 回答