我有一大段代码(遗留)知道要连接到外部服务让我们说连接到skype并带来它的可用性,这样做的方式(这就是为了示例它的工作方式) 。是
SkypeAvailabilityManager.java
.init
.start
.stop
.connect
.disconnect
.keepAlive
.updateStatus
(假设所有方法都需要公开并且有人调用它们)。 现在有一大段代码(巨大的遗留代码调用上述所有方法)。
现在我需要与skype同步或与其他服务同步让我们说MessengerB
但是使用messengerB我不需要init,start,connect等,我只需要updateStatus方法。
所以我想到了这个重构(对我来说听起来不错,我会解释原因
Interface: ExternalStatusFetcher
方法:
.updateStatus
现在遗留代码在许多地方调用.init .start .stop .connect的上述方法,但是我需要添加新的MessengerStatusUpdaterImpl只需要.updateStatus,我想重用skype实现的.updateStatus,因为我想重用代码。
所以我的局限性:
什么是好的重构呢? 如果我的容器类拥有一个包含所有方法的接口,那么这个方法很好,但是我的第二个实现并不需要所有的方法,所以我有点混淆该做什么。
答案 0 :(得分:1)
如果您不想更改主叫代码,我会选择:
MessengerB
实现接口,除了updateStatus
之外的所有方法都只是无操作(即无效的空方法)。恕我直言,这是一个很好的第一步,主要是因为它很好地捕获了当前的代码状态,很清楚你需要实现什么来创建新的信使,如果你想稍后重构遗留代码,可以作为基础
HTH