Java
简单的理解示例:两个抽象类,动物类和产品类。
动物有方法生产,以创造新的对象,如牛奶和鸡蛋。
两个类别(鸡和牛)扩展抽象类动物。
两类(鸡蛋和牛奶)扩展抽象类产品。
鸡、牛、蛋和牛奶将会有多个例子。
我的问题是:取决于动物(鸡还是牛),我的动物抽象类的方法(产生)如何知道要实例化哪个产品(鸡蛋或牛奶)。
我尝试过的是:我尝试在我的鸡类中拥有一个鸡蛋的静态实例,然后将它作为参数传递给动物构造函数,但是这是一个问题,因为我不想在创建一个鸡肉实例时创建一个鸡蛋实例。我想让动物抽象类知道它是否会制作鸡蛋的实例,这取决于它是由鸡还是牛扩展的。
发布于 2015-08-22 01:38:17
一种方法是使produce()方法也变得抽象,所以Chicken和Cow类必须实现它们。
另一个可能更糟的设计是传入一个ProductFactory对象,这个对象要么是一个EggFactory,要么是一个可以分别制作鸡蛋或牛奶的MilkFactory。
但是我会使用抽象的produce()技术。
abstract class Animal{
public abstract Product produce();
}
class Chicken extends Animal{
public Product produce(){
return new Egg();
}
}https://stackoverflow.com/questions/32151401
复制相似问题