在以下情况下,我是否可以避免重写方法

本文关键字:是否 可以避免 重写 方法 情况下 | 更新日期: 2023-09-27 18:35:11

假设有 5 家汽车租赁公司,当一个人在线租车时,带有汽车租赁详细信息的 XML 被发送到租赁机构,在那里它将被一些软件解析并输入到他们的系统中。

现在,如果有一种标准的方式来发送汽车租赁的XML,

那么这很容易,但是让我们假设每个机构都与不同的接口合作来发送汽车租赁,并且每个接口都以不同的格式发送XML,所以当需要解析时,你不能有一个标准方法, 您需要能够重写该方法以处理多个接口。 例如,您可能有以下 2 项:

<Rental>
<FirstName>John</FirstName>
<LastName>Doe</LastName>
<Pickup time="13:00"/>
<Date>06/06/12</Date>
</Rental>

<Rental>
<Name>
<First>John</First>
<Last>Doe</Last>
</Name>
<Pickup time="13:00" date="06/06/12"/>
</Rental>

如果每个汽车代理商使用不同的界面来处理租赁,那么覆盖一种方法 5 次的唯一方法,并且对于每个新代理机构,它将不得不再次增长,还是有更简单的方法?

在以下情况下,我是否可以避免重写方法

这听起来像是使用装饰器模式的一个很好的例子。假设您正在执行 OOP,您可以拥有一个为汽车租赁提供数据的基本对象,然后用另一个正确格式化数据的对象包装(或装饰它)。您需要为各个汽车租赁公司中的每个公司制作一个单独的装饰器。

如果您为

新机构唯一要做的就是将数据解析为内部数据表示,那么无论如何都做得很好;)。为什么要为似乎非常适合分离业务的东西而烦恼呢?

我想如果你真的愿意,你可以用多种方式解决它。我会尝试创建一个 ai 或 ann 的想法,以便将输入与最佳拟合匹配。但任何解决方案都可能比仅仅实现独特的"parseCustomersData"功能更昂贵。