oop - 当存在第三方系统的限制时,使用哪种 OO 设计?
问题描述
想象一下这种情况:由第三方系统提供的 Customer 对象,该对象具有与电话号码相关的多个属性。
public class Customer {
private String phoneAreaCode;
private String phoneNumber;
}
另一个第三方系统接收他自己的 Customer 对象,其中有一个 Phone 对象。
public class XCustomer {
private Phone phone;
}
我想知道是否存在将客户转换为 XCustomer 的 OO 设计模式。一个客户是否应该知道另一个客户对象并将电话属性转换为电话对象?我应该创建实用程序类来将一个转换为另一个吗?还是有更好的解决方案?
解决方案
由于 Customer 和 CustomerX 类都来自第三方,因此您不能修改 Customer 和 CustomerX 类。
我更喜欢一个简单的实用程序来进行转换。
您可以创建转换器接口/实现。这在 DI 环境中很有用,或者您希望有多个实现
public interface CustomerConverter { CustomerX convert(Customer customer); } public class CustomerConverterImpl implements CustomerConverter { @Override public CustomerX convert(Customer customer) { // TODO convert } }
推荐阅读
- subquery - Salesforce SOSQL 组合 3 个对象
- matlab - 循环中的 Xlsread 工作表
- reactjs - React Native 从 API 获取父与子的数据
- javascript - 在 mouseleave 上删除数据属性
- asp.net-mvc - ApiController 的 MVC 应用程序授权不起作用
- concrete5 - 使用事件以多种语言环境/语言发布
- entity-framework-core - Entity Framework Core 2.1.4 & 过滤相关/导航属性急切
- ios - 在触摸的位置将球落下屏幕,
- python - 将 json 从 mysql 导出为嵌套 json
- r - 如何在 Emacs + ESS 中对 Rmarkdown 文档运行拼写检查?