java - 设计通讯录的最面向对象的方法是什么?

标签 java design-patterns class-design

我在问自己如何用 Java 设计一个面向对象的地址簿。

假设联系人可以有多个联系详细信息,例如地址、电话号码和电子邮件地址。

实现此目的的一种方法是为每个联系人提供每种类型的 ArrayList。但必须有更好、更面向对象的解决方案。它是什么?

最佳答案

我能给你的最面向对象的建议是为每个项目/信息创建一个类。例如:

public abstract class ContactInfo { /* ... */ }

public class Address extends ContactInfo { /* ... */ }

public class PhoneNumber extends ContactInfo { /* ... */ }

public class EmailAddress extends ContactInfo { /* ... */ }

public class Contact {
    private String name;
    private Set<ContactInfo> info;
    // ...
}

最后,

public class AddressBook {
    List<Contact> contacts;
    // ...
}

对于您的具体情况来说,这可能会也可能不会太过分,但作为一个思想实验,这是可行的方法。显然,它处理了 OOP 的字面部分——使用对象——但也为封装、抽象和继承奠定了基础,这些都是密切相关的原则。

关于java - 设计通讯录的最面向对象的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5393919/

相关文章:

c# - 帮助命名一个类,该类具有一个名为 Execute() 的公共(public)方法

java - 如何在 LDAP 中使用 DN 和密码在 Java 中进行绑定(bind)?

Java 异常 : New BMP version not implemented yet

java - 使用 lambda 的类似函数的设计模式

c# - IoC 在构造函数中使用繁重的工作来初始化服务,但避免使用临时的 Init() 方法

java - 基于其他两个对象的子类创建一个对象

java - 使用JDBC连接mysql的问题

java - 使用Zxing库连续扫描二维码,无法打开相机

用于映射多个 MySQL 表的 PHP 设计模式

c++ - 这个容器实现是否完全明智?