gpt4 book ai didi

java - 抽象方法与继承

转载 作者:行者123 更新时间:2023-12-01 18:40:06 27 4
gpt4 key购买 nike

我正在尝试了解更多有关类设计的知识,但遇到了困境。假设我有一个包含三个抽象概念的在线拍卖:销售、卖方和买方。一次销售有卖方和买方。卖方和买方都有相似的字段集,例如姓名、电话号码和地址,因此将它们分组成一个类是有意义的,Person 说。然后,我们可以将代码集中到抽象 Person 类中的字段和访问器,并为教师和学生指定特定类型。

这可能会导致如下代码:

class Sale {
Person teacher;
Person student;

String description;
int hourlyRate;

// Some lesson methods
}

abstract class Person {
private String name;
private String address;
private String telephoneNumber;
// Getters & setters...
}

class Seller extends Person {
// Some teacher stuff
}

class Buyer extends Person {
// Some student stuff
}

现在,应用程序需要包含 B2B 客户,但由于 Seller 和 Buyers 属于 Person 类型,因此它们不适合我们的类层次结构。如果我们使用界面,这种情况可以避免,但我们需要复制不同的联系人字段。

摆脱这种情况的最佳方法是什么?

最佳答案

考虑通过组合而不是继承来扩展。在执行此操作时,您可以使用抽象类和接口(interface),其中卖方和买方包含由接口(interface)定义的某种代理,并且您的个人抽象类也实现了该接口(interface),并且抽象业务客户端也实现了该接口(interface)。

例如

//  both buyer and seller
class BusinessEntity {
// an interface that can be a person, or a business
private Agent agent;

然后是 Person 类...

abstract class Person implements Agent {

}

和商务舱

abstract class Business implements Agent {

}

并考虑进行设置,以便可以轻松地使用依赖项注入(inject)来更改 BusinessEntity 持有的代理

关于java - 抽象方法与继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20276006/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com