java - 类设计问题

标签 java design-patterns ooad

目前,我有以下类(class)设计:

  1. AnimalHandler(所有动物的基类)

  2. TigerHandler 扩展 AnimalHandler、LionHandler 扩展 AnimalHandler、LeopardHandler 扩展 AnimalHandler 等等。

  3. TigerHandler、LionHandler、LeopardHandler 等“拥有”Tiger、Lion、Leopard 等。

现在的问题是:TigerHandler、LionHandler、LeopardHandler 等都是相同的(它们具有相同的方法等),除了它们分别处理 Tiger、Lion、Leopard 等类。因此,如果我需要一个名为 Cheetah 的新动物组,我只需要复制任何 (Tiger|Lion|Leopard)Handler 并搜索并替换其“HAS A”类名称,如 Tiger、Lion、Leopard。

有没有一种方法(设计)可以使用,而不是像上面那样复制/创建新的 CheetahHandler?比如说,一个 GenericHandler 可以处理任何这些“HAS A”类(如 Tiger、Lion、Cheetah 等)。

最佳答案

如果您的处理程序所做的只是提供类型安全,而不执行其他任何操作,则可以使用泛型:

public class AnimalHandler<T extends Animal> {

    private T theAnimal;

    public T getTheAnimal() {} 

    // Etc

}

关于java - 类设计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16293154/

相关文章:

java - 有没有一种简单的方法将日期(sql)转换为以下格式月(3个字符)日(int),年(2014)

java - 如何仅调用一次 componentResized 方法(当用户停止按住鼠标按钮时)?

oop - 构造函数与工厂方法

java - 使用嵌套对象处理父类和子类的继承

java - Android 是否保留 View 更改历史记录?

java - 尝试从 Java 源代码调用 JavaScript 函数

angular - Angular2的微服务架构

c++ - 面向对象分析C++

c# - 如何在深度调用中使用 serilog 跟踪请求

design-patterns - Angular2 中的装饰/计算数组