这篇文章是关于我的求职面试问题,我在这里要求找到解决问题的不同方法。
面试官让我在白板上写下我将如何设计一个接收Person对象的方法,所以我写这个:
class Person
{
//Some properties
}
public void MyMethod(Person p)
{
}
然后面试官告诉我这个方法必须收到一个人的地址列表(数组),我这样修改了:
class Person
{
//Some properties
private List<Address> adds;
}
class Address
{
//Some properties
}
public void MyMethod(Person p)
{
}
然后他告诉我这个方法必须收到一份有地址的人员名单,还有一个老板名单,所以我这样做了:
class Parameter
{
private List<Person> pers;
}
class Person
{
//Some properties
private List<Address> adds;
private List<Boss> boss;
}
class Address
{
//Some properties
}
class Boss
{
//Some properties
}
public void MyMethod(Parameter p)
{
}
(在每次更改时,他告诉我不得修改方法签名)
面试官只是说&#34; ok&#34;但我不认为他对我的方法很有信心,我不是C#或Java的专家(面试官说他掌握了Java)而且我很紧张,只是想到了这个&#34; easy& #34;解决方案,但似乎这是一个非常糟糕的选择。
如果您能指导我使用C#或Java
以最佳方式解决此问题,我将不胜感激答案 0 :(得分:0)
嗯,我认为这里要提到的重要事项也是对实体行为的不同看法。
所以Address类或者更好的它应该是一个不可变的DataType类。一个人可以拥有一个或多个地址对象。 我的问题与Boss和Person类有关:你想要一个知道N个人的Boss,或者你想要一个知道N个Boss对象的人,或者两个都知道N:或N:M关系的人。
我的建议是关于延长Boss with Person的问题不是这样做的。你有简单的实体类,扩展很重。如果您想要这样的行为,请使用组合,例如Boss有一个person属性,通过在Boss类中再次定义地址等来委托或简单地重用你的数据类型。
没有变化的参数确定有点愚蠢。我对Parameter类的目的是什么,但这不是一个好方法。因此,如果您的方法只接收Person对象,则使用Person类型,否则使用Collection类型重载该方法。
所以这只是我对这个话题的看法;)