A B, .
, , , (Address getAddress()), A B.
:
public class WrapperA implements Addressable {
private final A a;
public WrapperA(A a) {
this.a = a;
}
@Override
public Address getAddress(){
return new Address(a.getCity(), a.getStreet(), etc...);
}
}
, .
, A, a WrapperA.
.
, , .
, A B, .
Address, factory Address A B.
public class Address{
...
String city;
String street;
...
private Address(){
}
public static Address of(A a){
return new Address(a.getStreet(), a.getCity(), ....);
}
public static Address of(B b){
return new Address(b.getStreet(), b.getCity(), ...);
}
}
.