我有一组我在课堂上拥有的功能。这些函数是一组最低通用性。
为了能够运行它,我需要生成某些信息,但是这些信息可以通过我的班级从两条路线之一到达。
我会试着总结一下我的情况......
可以说我有一个课程如下:
public class onHoliday(){
private Object modeOfTravel;
private Object location;
public onHoliday(Object vehicle, Location GPScoords) {
}
private boolean haveFun() {
//function to have fun, needs 4 people
}
}
让我们想象一下,我可以开车或骑自行车去度假。
我的haveFun()
功能取决于我的车辆类型。
但只是松散的。我有另一个函数可以确定我的车辆类型并提取所需的值。例如,如果我发送一辆汽车,我可能会一次获得 4 个人,但如果我发送我的自行车,我至少需要 2 人才能获得所需的 4
我目前有两种选择:
重载我的构造函数,以便我可以将两辆自行车或一辆汽车送入其中,然后我可以在我之前调用 2 个中间函数之一(例如获取我的 4 个人的姓名)
haveFun()
- 这就是我目前正在做的事情.将两个构造函数拆分为两个单独的类,并
haveFun()
在第三个类中重复我,这将成为我的另外两个类的对象。我的问题是我的中间函数只是几行代码,我不想将它们放在单独的文件中!(我总是把类放在单独的文件中!)
请注意,haveFun()
除了这两个课程之外,我不需要,甚至不需要我的东西onHoliday
(即,我没有机会haveFun()
在周末或晚上做一些事情!)。
我虽然有关于放入haveFun()
一个接口,但是只有一个方法的接口似乎有点毫无价值!即使那样,我也必须在两个课程中都使用该方法-一个用于自行车,另一个用于汽车!
我曾想过让我的onHoliday
班级接受任何对象类型,但是我不希望有人意外地把船送到我的onHoliday
班级(想象一下我不会游泳,所以它不会发生)。
重要的是要注意我的onHoliday
课程是包私有的,并且是最终的。实际上,它只能通过其他类中的其他“私有方法”访问,并且本身只有私有方法。
编辑1:
我相信有人会建议我在将数据发送到 onHoliday() 类的类中处理这个问题。但是这个类(让我们称之为 travel() )没有理由关心我正在使用的车辆类型,如果我这样做它确实关心,我只是将问题移到树上更远的另一个地方。现在必须重新编写我的所有中间类以访问汽车或自行车,目前他们只接受一个车辆对象,该对象有一个布尔开关来确定它是自行车还是汽车。
编辑2:
我刚刚有了另一个关于有一个抽象类来运行我的乐趣,然后在我的自行车或汽车类中将它作为一个“内部类”来实现。然后我可以访问我的自行车或班级的成员。这也有意义吗?
注意:我可能应该提一下,我必须确保在我的 onHoliday() 班级中我至少有 4 个人。
也许另一种思考方式是......
我可以获得一个多页文件,并从传递的页码列表中提取我需要的页面。或者我可以获得多个文件的列表。
在第一种情况下,我发送单个文件对象,在第二种情况下选择页码,我发送多个文件对象(预先选择我感兴趣的对象)。
事实上,这可能是一个更好的描述