C# 从多个类继承成员
我一直在学习使用OOD进行设计,并坚持使用场景 我有一个类C# 从多个类继承成员,c#,oop,C#,Oop,我一直在学习使用OOD进行设计,并坚持使用场景 我有一个类User,它扩展了一个抽象类Person。ClassPerson具有类型为Address的成员User只有用户名和密码,Address有一些字符串字段 现在,我想添加一个类客户机,它可以是个人或组织(待添加)客户端也会有一些数据 我考虑过接口,但它们只能有方法。谁能帮我找到合适的设计 我没有遵循任何模式,也没有使用C#NET进行编码 更新 我想我无法正确地解释这种情况。对不起。请看一下图表。在这里,我想添加的是Client类。 试着写作
User
,它扩展了一个抽象类Person
。ClassPerson
具有类型为Address
的成员User
只有用户名和密码,Address
有一些字符串字段
现在,我想添加一个类客户机
,它可以是个人
或组织
(待添加)<代码>客户端也会有一些数据
我考虑过接口,但它们只能有方法。谁能帮我找到合适的设计 我没有遵循任何模式,也没有使用C#NET进行编码
更新 我想我无法正确地解释这种情况。对不起。请看一下图表。在这里,我想添加的是
Client
类。
试着写作文。个人和组织不一定是用户,尽管它们都可以有地址或用户帐户。实际上,他们很可能两者都有不止一个。
如果您更多地考虑HAS A而较少考虑IS A,那么您可以提出更多可维护的选择。 例如,你可以有一个
class Address {
public string street {get; private set;}
public string city {get; private set;}
public AddressTypes AddressType {get; private set;} // an enum to differentiate
// "home address", "legal address"
...
}
现在,如果您需要对人员
和组织
都必须具有地址
的事实进行建模,您可以创建一个接口
interface IAddressable {
IEnumerable<Address> {get;}
}
优点是:
- 您不必更改现有代码以将角色(客户机)作为现有实体(个人、组织)的基类进行追溯李>
- 如果您的公司开始将实例状态作为客户端,则可以添加
,而无需更改现有部分StateClient
组织
s也有地址
。因此,也许地址
应该在客户
上,而个人
和组织
应该从客户
中派生出来?从你的问题中,我无法选择一个应该从多个类继承的类感谢一个好的建议。我只为系统的用户添加了User
类。他们不需要是人
。但是他们可以有个人信息。Person
是一个抽象类。我如何实例化它?@Raihan我不确定我是否理解你的问题,但如果它是抽象类,你需要一个从Person继承的具体类。当我想要获得所有客户端时,你的设计有问题。我必须调用PersonClient.GetAll()
和OrganizationClient.GetAll()
@Raihan我的代码只是一个例子。如果需要的话,可以将客户机设置为非抽象类。如果将来不打算扩展客户机的类型,您可以在客户机中使用枚举来指定客户机的类型,就像我在Address类中对AddressType所做的那样,而不是PersonClient和OrganizationClient子类
abstract class Client : IAddressable, IWithAccount {
// implement IAddressable and IWithAccount
}
class PersonClient : Client
{
public PersonClient(Person person)
{
// make the Client's address refer to the Person's address
// make the Client's account refer to the Person's account
}
}
class OrganizationClient : Client
{
public OrganizationClient(Organization organization)
{
// make the Client's address refer to the Organization's address
// make the Client's account refer to the Organization's account
}
}