0

我的问题与接口实现(接口隔离原则)密切相关,但我非常感谢您提供更多建议。

我有两个提供邮资报价的邮资 API——唯一的共同点是肥皂。我已经编写了我的应用程序代码来与这些 API 进行交互,方法是编写一个“邮资驱动程序”接口,这两个封装的 API 都实现了。然后我使用一个“邮资计算器”类,该类通过它们的通用接口使用这些“驱动程序”,以便在不知道具体如何完成的情况下计算邮资成本。

我的问题是,这些 API 是如此不同(一个需要作为方法参数传入的凭据,而另一个使用 xml 文件作为凭据,一个计算总重量的邮费,而另一个计算包裹详细信息),我不确定是否使用抽象我的代码的接口是最好的方法吗?开始感觉将条件代码编码到“邮资计算器”类中,直接使用 API 会更干净、更优雅(尽管不太灵活和面向未来)。

任何的建议都受欢迎。顺便说一句,我正在用 PHP 编写,但我正在寻求更多“一般原则”的建议。

4

1 回答 1

0

我同意 Wrikken 的观点,您始终可以将身份验证接口传递给邮资接口。然后,您只是将差异传递给真正不同的班级。

同样,您可以创建用于计算邮资的接口,例如 IPostageSpecificationByWeight 和 IPostageBy?。然后您可以将它们注入到您的服务使用的基类或接口中。

您可以使用在派生类中实现身份验证方法和计算方法的抽象类来处理相同的概念,其中使用它们的常用方法在抽象类中,然后您只有一个接口。有很多方法可以将其抽象出来,而这些只是其中的几个选项。

于 2012-12-12T02:00:57.890 回答