实现客户端提供的接口
Implementing an interface provided by a Client
我有以下任务
public class Event {
private final Integer id;
private final Collection<Market> market;
private final Boolean completed;
public Event(Integer id,
Collection<Market> market, Boolean completed) {
this.id = id;
this.market = market;
this.completed = completed;
}
public Integer getId() {
return id;
}
public Boolean getCompleted() {
return completed;
}
}
public class Market {
private final Integer marketId;
public Market(Integer marketId) {
this.marketId = marketId;
}
public Integer getMarketId() {
return marketId;
}
}
public interface Client
{
public void addEvent(Event event);
/**
* Update event status to completed.
*/
public void eventCompleted(Integer id);
/**
* Add market to an existing event
*/
public void attachMarketToEvent(Integer id, Market market);
/**
* Remove market from an existing event
*/
public void removeMarketFromEvent(Integer id, Market market);
}
我需要在不更改事件或市场的情况下实施客户端 类。
如何制作?有任何想法吗?我可以实现它,但如果我更改这个最终字段。
对我有什么期望?我真的很惊讶。
Event
是不可变的。也就是说,一旦创建就无法更改。查看 Client
接口,唯一似乎有问题的方法是 eventCompleted
方法:
/**
* Update event status to completed.
*/
public void eventCompleted(Integer id);
看起来此方法希望您将 Event
的 completed
标志更新为 true,这是不可能的。
其余方法不会有问题,因为它们不会修改 Event
的字段:
addEvent(Event event)
:这应该不是问题,因为总是可以创建新事件
attachMarketToEvent(Integer id, Market market)
和 removeMarketFromEvent(Integer id, Market market)
:这些应该不是问题,因为它们将用于将新对象添加到允许的 market
集合中。
您需要回到希望您实施客户端的人那里并询问他们:如果 Event
是不可变的,我如何更新 completed
字段?
我有以下任务
public class Event {
private final Integer id;
private final Collection<Market> market;
private final Boolean completed;
public Event(Integer id,
Collection<Market> market, Boolean completed) {
this.id = id;
this.market = market;
this.completed = completed;
}
public Integer getId() {
return id;
}
public Boolean getCompleted() {
return completed;
}
}
public class Market {
private final Integer marketId;
public Market(Integer marketId) {
this.marketId = marketId;
}
public Integer getMarketId() {
return marketId;
}
}
public interface Client
{
public void addEvent(Event event);
/**
* Update event status to completed.
*/
public void eventCompleted(Integer id);
/**
* Add market to an existing event
*/
public void attachMarketToEvent(Integer id, Market market);
/**
* Remove market from an existing event
*/
public void removeMarketFromEvent(Integer id, Market market);
}
我需要在不更改事件或市场的情况下实施客户端 类。 如何制作?有任何想法吗?我可以实现它,但如果我更改这个最终字段。 对我有什么期望?我真的很惊讶。
Event
是不可变的。也就是说,一旦创建就无法更改。查看 Client
接口,唯一似乎有问题的方法是 eventCompleted
方法:
/**
* Update event status to completed.
*/
public void eventCompleted(Integer id);
看起来此方法希望您将 Event
的 completed
标志更新为 true,这是不可能的。
其余方法不会有问题,因为它们不会修改 Event
的字段:
addEvent(Event event)
:这应该不是问题,因为总是可以创建新事件attachMarketToEvent(Integer id, Market market)
和removeMarketFromEvent(Integer id, Market market)
:这些应该不是问题,因为它们将用于将新对象添加到允许的market
集合中。
您需要回到希望您实施客户端的人那里并询问他们:如果 Event
是不可变的,我如何更新 completed
字段?