在这两个实现中,我应该如何实现Parcel详细信息接口



我有一个XML文档,我将从中读取数据,我必须为它实现一个接口

<Parcel>
<Sender>
<Name>Klaas</Name>
<Address>
<Street>Uranusstraat</Street>
<HouseNumber>22</HouseNumber>
<PostalCode>2402AE</PostalCode>
<City>Alphen a/d Rijn</City>
</Address>
</Sender>
<Receipient>
<Name>Piet</Name>
<Address>
<Street>Schenklaan</Street>
<HouseNumber>22</HouseNumber>
<PostalCode>2497AV</PostalCode>
<City>Den Haag</City>
</Address>
</Receipient>
<Weight>0.02</Weight>
<Value>0.0</Value>
</Parcel>

我应该如何创建接口?

第一种方式:

interface IAddress
{
string Street {get; set;}
int HouseNumber {get; set;}
string PostalCode {get; set;}
string City {get; set;}
}
interface ISender : IAddress
{
string Name {get; set;}
IAddress SenderAddress {get; set;}
}
interface IReceipient : IAddress
{
string Name {get; set;}
IAddress ReceipientAddress {get; set;}
}
interface IParcel : ISender, IReceipient
{
ISender Sender {get; set;}
IReceipeint Receipient {get; set;}
}

第二种方式:

interface IParcelDetails
{
string SenderName { get; set; }
string SenderStreet { get; set; }
int SenderHouseNumber { get; set; }
string SenderPostalCode { get; set; }
string SenderCity { get; set; }
string ReceipientName { get; set; }
string ReceipientStreet { get; set; }
int ReceipientHouseNumber { get; set; }
string ReceipientPostalCode { get; set; }
string ReceipientCity { get; set; }
}

但是,如果必须使用第一种方法,我不确定应该如何在类中实现IParcel接口。

第2部分:(更新(根据重量,我必须选择一个部门

  • 重量高达1公斤的包裹由";邮件";部门
  • 重量高达10公斤的包裹由";常规的";部门
  • 重量超过10公斤的包裹由";"重";部门

我正在使用Factory Design Pattern来实现此功能,但我应该如何实现?

我建议采用第一种方法,但您必须稍微调整一下接口。

interface IAddress
{
string Street { get; set; }
int HouseNumber { get; set; }
string PostalCode { get; set; }
string City { get; set; }
}
interface IPerson
{
string Name { get; set; }
IAddress Address { get; set; }
}
interface IParcel
{
IPerson Sender { get; set; }
IPerson Receipient { get; set; }
double Weight { get; set; }
double Value { get; set; }
}
interface IDepartment
{
IList<IParcel> Parcels { get; set; }
string Name { get; set; } // Or Type, whatever you want
}

您的部门类型的另一个选项是枚举:

interface IDepartment
{
IList<IParcel> Parcels { get; set; }
DepartmentType Type { get; set; }
}
enum DepartmentType
{
Mail,
Regular,
Heavy
}

然后,您将为每个接口创建一个单独的类。因此,最终您将有三个类:DepartmentParcelPersonAddress

相关内容

  • 没有找到相关文章

最新更新