Eri*_*air 0 architecture oop design-patterns
我有一个基Address类,它定义了基本的地址属性,并充当CRUD对象:
我有一个'ShipToAddress'类,它扩展了Address并包含了两个属性:
Address包括每个属性的验证方法,并ShipToAddress包括仅对其属性(电话号码和电子邮件地址)进行验证.
我的问题是,我还想在不重复代码的情况下考虑这两个类的美国和国际地址,以便我可以为州和邮政编码提供不同的验证方法.美国国家验证将确保该值是50个国家之一.国际验证只会确保它不超过数据库中允许的长度.
我如何设计它以允许任意数量的不同类型的地址(美国,加拿大等),但也有基Address类和ShipToAddress类,而不重复代码?我基本上想要以下内容:
Address 基类ShipToAddressUSAAddressUSAShipToAddress***Address***ShipToAddress将AddressValidator定义为单独的接口.
public interface AddressValidator {
boolean validateAddress(ShipToAddress add);
}
Run Code Online (Sandbox Code Playgroud)
创建它的不同实现- USAAddressValidator,CanadaAddressValidator等等.
您可以根据国家/地区Factory为您提供适当的AddressValidator对象.
public class AddressValidatorFactory {
public static AddressValidator GetValidator(Address address) { ... }
}
Run Code Online (Sandbox Code Playgroud)
你也应该考虑是否ShipToAddress应该extend Address还是contain它.你打算把ShipToAddress对象传递到Address预期的位置吗?如果没有,那么就没有必要ShipToAddress扩展地址.
| 归档时间: |
|
| 查看次数: |
229 次 |
| 最近记录: |