笼统工厂形式
定义
在工厂办法中,马厂只能出产马,鸭厂只能出产鸭。但显示日子中农场不仅能够养动物仍是养植物 因此笼统工厂形式就要考虑多等级产品的出产
要使用笼统工厂需要满足以下条件:
- 有多个产品族,每个详细工厂创立同一个族但不同等级的产品
- 本家产品能够一同使用
形式结构和完成
结构
- 笼统工厂:提供多个产品的接口,包括多个产品的创造办法,能够创立多个不同等级的产品
- 详细工厂:完成笼统工厂的多个笼统办法,完成详细产品的创立
- 笼统产品
- 详细产品
完成
package AbstractFactory;
/**
* @author richard
* @date 2021年11月23日 15:48:00
* @description TODO
*/
public class FarmTest {
public static void main(String[] args) {
Farm sh=new SHFarm();
Duck duck= (Duck) sh.newAnimal();
duck.shout();
Fruit tomoto= (Fruit) sh.newPlant();
tomoto.show();
}
}
/**
* 笼统产品:动物类
*/
interface Animal{
public void shout();
}
/**
* 笼统产品:植物类
*/
interface Plant{
public void show();
}
/**
* 详细产品:马
*/
class Horse implements Animal {
@Override
public void shout() {
System.out.println("马叫ing");
}
}
/**
* 详细产品:鸭
*/
class Duck implements Animal {
@Override
public void shout() {
System.out.println("小鸭叫ing");
}
}
/**
* 详细产品:水果
*/
class Fruit implements Plant{
@Override
public void show() {
System.out.println("水果长大了");
}
}
/**
* 详细产品:蔬菜
*/
class Vegetable implements Plant{
@Override
public void show() {
System.out.println("蔬菜能够吃了");
}
}
/**
* 笼统工厂
*/
interface Farm{
public Animal newAnimal();
public Plant newPlant();
}
/**
* 详细工厂:上海农场
*/
class SHFarm implements Farm {
@Override
public Animal newAnimal() {
System.out.println("小鸭出世");
return new Duck();
}
@Override
public Plant newPlant() {
System.out.println("水果能够吃了");
return new Fruit();
}
}
/**
* 详细工厂:内蒙古农场
*/
class NMGFarm implements Farm{
@Override
public Animal newAnimal() {
System.out.println("马出世");
return new Horse();
}
@Override
public Plant newPlant() {
System.out.println("蔬菜能够吃了");
return new Vegetable();
}
}