当第三方系统存在限制时,应使用哪种OO设计?

时间:2018-09-14 14:31:53

标签: oop design-patterns

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

public class Customer {

    private String phoneAreaCode;
    private String phoneNumber;

}

另一个第三方系统,该第三方系统接收其自己的Customer对象,该对象内部具有Phone对象。

public class XCustomer {

    private Phone phone;

}

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

1 个答案:

答案 0 :(得分:1)

  1. 由于Customer和CustomerX类均来自第三方,因此您无法修改Customer和CustomerX类。

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

  3. 您可以创建Converter接口/实现。这将在DI环境中很有用,或者您希望有多种实现方式

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