【问题标题】:Java Abstract class to instationize other class用于安装其他类的 Java 抽象类
【发布时间】:2015-08-22 01:32:44
【问题描述】:

Java

理解的简单例子: 两个抽象类,Animal 和 Product。

Animal 有 Produce 方法,用于创建新的对象,例如牛奶和鸡蛋。

两个类(鸡和牛)扩展抽象类动物。

扩展抽象类 Product 的两个类(鸡蛋和牛奶)。

会有多个鸡蛋和牛奶的实例。

我的问题: 根据动物(鸡或牛),我的动物抽象类的方法(生产)如何知道要实例化哪个产品(鸡蛋或牛奶)。

我尝试了什么: 我尝试在我的鸡类中拥有一个鸡蛋的静态实例,然后将它作为参数传递给动物构造函数,但这是一个问题,因为我不想在制作鸡的实例时创建鸡蛋的实例。 我希望动物抽象类知道它是否会根据鸡或牛的扩展来制作鸡蛋的实例。

【问题讨论】:

    标签: java abstract-class


    【解决方案1】:

    一种方法是使produce() 方法也抽象化,以便ChickenCow 类必须实现它们。

    另一种可能更糟糕的设计是传入一个 ProductFactory 对象,该对象将是可以分别制作鸡蛋或牛奶的 EggFactory 或 MilkFactory。

    但我会采用抽象的produce() 技术。

    abstract class Animal{
        public abstract Product produce();
    }
    
    class Chicken extends Animal{
    
        public Product produce(){
             return new Egg();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-23
      • 2013-12-25
      相关资源
      最近更新 更多