[英]How to relate classes in java?
我写了时间转换程序(即秒到分钟和分钟等),但后来我发现这些类执行类似的操作。有没有办法将这些类关联起来,如果有的话请给出一些解决方案和建议。 这是我的代码......
Second.java
import java.util.concurrent.*;
public class Second {
private long secondsValue;
public Second() {
secondsValue = 0L;
}
public Second(String from, String to, long unitValue) {
unitSelection(from, to, unitValue);
}
private void convertSecondToMinute(long unitValue) {
unitValue = TimeUnit.MINUTES.convert(unitValue, TimeUnit.SECONDS);
secondsValue = unitValue;
}
private void convertSecondToHour(long unitValue) {
unitValue = TimeUnit.HOURS.convert(unitValue, TimeUnit.SECONDS);
secondsValue = unitValue;
}
private void convertSecondToDay(long unitValue) {
unitValue = TimeUnit.DAYS.convert(unitValue, TimeUnit.SECONDS);
secondsValue = unitValue;
}
private void convertSecondToWeek(long unitValue) {
unitValue = unitValue/60/60/24/7;
secondsValue = unitValue;
}
public long getSeconds() {
return secondsValue;
}
private void unitSelection(String from, String to,
long unitValue) {
if( from.equalsIgnoreCase("second")) {
if(to.equalsIgnoreCase("minute")) {
convertSecondToMinute(unitValue);
}
else if(to.equalsIgnoreCase("hour")) {
convertSecondToHour(unitValue);
}
else if(to.equalsIgnoreCase("day")) {
convertSecondToDay(unitValue);
}
else if(to.equalsIgnoreCase("week") ) {
convertSecondToWeek(unitValue);
}
else {
System.out.println("Invalid argument...!");
}
}
}
}
Minute.java
import java.util.concurrent.TimeUnit;
public class Minute {
private long unitMinute;
public Minute() {
unitMinute = 0L;
}
public Minute(String from, String to,
long unitValue) {
unitSelection(from, to, unitValue);
}
private void convertMinuteToSecond(long unitValue) {
unitValue = TimeUnit.SECONDS.convert(unitValue, TimeUnit.MINUTES);
unitMinute = unitValue;
}
private void convertMinuteToHour(long unitValue) {
unitValue = TimeUnit.HOURS.convert(unitValue, TimeUnit.MINUTES);
unitMinute = unitValue;
}
private void convertMinuteToDay(long unitValue) {
unitValue = TimeUnit.DAYS.convert(unitValue, TimeUnit.MINUTES);
unitMinute = unitValue;
}
private void convertMinuteToWeek(long unitValue) {
long value = unitValue /60/24/7;
unitMinute = value;
}
public long getUnitMinute() {
return unitMinute;
}
private void unitSelection(String from, String to,
long unitValue) {
if( from.equalsIgnoreCase("minute")) {
if(to.equalsIgnoreCase("second")) {
convertMinuteToSecond(unitValue);
}
else if(to.equalsIgnoreCase("hour")) {
convertMinuteToHour(unitValue);
}
else if(to.equalsIgnoreCase("day")) {
convertMinuteToDay(unitValue);
}
else if(to.equalsIgnoreCase("week") ) {
convertMinuteToWeek(unitValue);
}
else {
System.out.println("Invalid argument...!");
}
}
}
}
改进代码的最佳方法是删除所有类并改为使用TimeUnit
。
TimeUnit
具有所有这些功能(以及更多),并附带JDK。
不要重新发明轮子。
我看到两个选项:
1.重新定义为一个单独的类:它建议使用通用值标准(例如毫秒数),并提供它在不同的度量中的含义,如分钟,小时,等等。
class Duration
{
private long secondsValue;
public Duration() {
secondsValue = 0L;
}
public Duration(String format, long value) {
if (format.equals("SECONDS")) secondsValue = value;
else if (format.equals("MINUTES")) secondsValue = value*60;
else if (format.equals("HOURS")) secondsValue = value*60*60;
else if (format.equals("DAYS")) secondsValue = value*60*60*24;
else if (format.equals("WEEKS")) secondsValue = value*60*60*24*7;
}
public long asMinutes() {
return value/60;
}
public long asHours() {
return value/(60*60);
}
public long asDays() {
return value/(60*60*24);
}
public long asWeeks() {
return unitValue/(60*60*24*7);
}
public long asSeconds() {
return secondsValue;
}
}
2.使用转换器实用程序类:如何使用TimeUnit.MINUTES.convert(unitValue, TimeUnit.SECONDS);
从秒转换为分钟
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.