首页 > 解决方案 > 当存在第三方系统的限制时,使用哪种 OO 设计?

问题描述

想象一下这种情况:由第三方系统提供的 Customer 对象,该对象具有与电话号码相关的多个属性。

public class Customer {

    private String phoneAreaCode;
    private String phoneNumber;

}

另一个第三方系统接收他自己的 Customer 对象,其中有一个 Phone 对象。

public class XCustomer {

    private Phone phone;

}

我想知道是否存在将客户转换为 XCustomer 的 OO 设计模式。一个客户是否应该知道另一个客户对象并将电话属性转换为电话对象?我应该创建实用程序类来将一个转换为另一个吗?还是有更好的解决方案?

标签: oopdesign-patterns

解决方案


  1. 由于 Customer 和 CustomerX 类都来自第三方,因此您不能修改 Customer 和 CustomerX 类。

  2. 我更喜欢一个简单的实用程序来进行转换。

  3. 您可以创建转换器接口/实现。这在 DI 环境中很有用,或者您希望有多个实现

    public interface CustomerConverter {
    
        CustomerX convert(Customer customer);          
    }
    
    public class CustomerConverterImpl implements CustomerConverter {
    
         @Override
         public CustomerX convert(Customer customer) {
             // TODO convert
         }
    }
    

推荐阅读