直接上代码:
抽象农场 Farm.java
package com.xingsfdz.abstractfactory;
/**
*
* @类名称 Farm.java
* @类描述 <pre>农场抽象接口</pre>
* @作者
* @创建时间 2019年5月4日 下午11:07:31
* @版本 1.00
*
* @修改记录
* <pre>
* 版本 修改人 修改日期 修改内容描述
* ----------------------------------------------
* 1.00 xingsfdz 2019年5月4日
* ----------------------------------------------
* </pre>
*/
public interface Farm {
public Animal newAnimal();//动物工厂生产动物
public Plant newPlant();//植物工厂生产植物
}
具体的农场实现,渝北农场:YBFarm.java
package com.xingsfdz.abstractfactory;
/**
*
* @类名称 YBFarm.java
* @类描述 <pre>具体农场:渝北农场养殖牛与种植水果</pre>
* @作者
* @创建时间 2019年5月4日 下午11:16:03
* @版本 1.00
*
* @修改记录
* <pre>
* 版本 修改人 修改日期 修改内容描述
* ----------------------------------------------
* 1.00 xingsfdz 2019年5月4日
* ----------------------------------------------
* </pre>
*/
public class YBFarm implements Farm {
@Override
public Animal newAnimal() {
return new Cattle();//具体生产牛的渝北农场
}
@Override
public Plant newPlant() {
return new Fruitage();//具体生水果的渝北农场
}
}
具体的农场实现,渝中农场:YZFarm.java
package com.xingsfdz.abstractfactory;
/**
*
* @类名称 YZFarm.java
* @类描述 <pre>具体农场:渝中农场 养殖马与种植蔬菜</pre>
* @作者
* @创建时间 2019年5月4日 下午11:16:45
* @版本 1.00
*
* @修改记录
* <pre>
* 版本 修改人 修改日期 修改内容描述
* ----------------------------------------------
* 1.00 xingsfdz 2019年5月4日
* ----------------------------------------------
* </pre>
*/
public class YZFarm implements Farm {
@Override
public Animal newAnimal() {
return new Horse();//具体生产马的渝中农场
}
@Override
public Plant newPlant() {
return new Vegetables();//具体生产蔬菜的渝中农场
}
}
抽象的动物工厂:Animal.java
package com.xingsfdz.abstractfactory;
/**
*
* @类名称 Animal.java
* @类描述 <pre>抽象产品:动物抽象接口</pre>
* @作者
* @创建时间 2019年5月4日 下午11:08:47
* @版本 1.00
*
* @修改记录
* <pre>
* 版本 修改人 修改日期 修改内容描述
* ----------------------------------------------
* 1.00 xingsfdz 2019年5月4日
* ----------------------------------------------
* </pre>
*/
public interface Animal {
public void production();//生产
}
抽象的植物工厂:Plant.java
package com.xingsfdz.abstractfactory;
/**
*
* @类名称 Plant.java
* @类描述 <pre>抽象产品:植物抽象接口</pre>
* @作者
* @创建时间 2019年5月4日 下午11:09:05
* @版本 1.00
*
* @修改记录
* <pre>
* 版本 修改人 修改日期 修改内容描述
* ----------------------------------------------
* 1.00 xingsfdz 2019年5月4日
* ----------------------------------------------
* </pre>
*/
public interface Plant {
public void production();//生产
}
具体的动物产品牛类
package com.xingsfdz.abstractfactory;
/**
*
* @类名称 Cattle.java
* @类描述 <pre>具体产品:牛类</pre>
* @作者
* @创建时间 2019年5月4日 下午11:10:51
* @版本 1.00
*
* @修改记录
* <pre>
* 版本 修改人 修改日期 修改内容描述
* ----------------------------------------------
* 1.00 xingsfdz 2019年5月4日
* ----------------------------------------------
* </pre>
*/
public class Cattle implements Animal{
@Override
public void production() {
System.out.println("生产牛。。。");
}
}
马类:
package com.xingsfdz.abstractfactory;
/**
*
* @类名称 Horse.java
* @类描述 <pre>具体产品:马</pre>
* @作者
* @创建时间 2019年5月4日 下午11:12:05
* @版本 1.00
*
* @修改记录
* <pre>
* 版本 修改人 修改日期 修改内容描述
* ----------------------------------------------
* 1.00 xingsfdz 2019年5月4日
* ----------------------------------------------
* </pre>
*/
public class Horse implements Animal{
@Override
public void production() {
System.out.println("生产马...");
}
}
具体的植物产品:水果
package com.xingsfdz.abstractfactory;
/**
*
* @类名称 Fruitage.java
* @类描述 <pre>具体植物产品:水果</pre>
* @作者
* @创建时间 2019年5月4日 下午11:13:10
* @版本 1.00
*
* @修改记录
* <pre>
* 版本 修改人 修改日期 修改内容描述
* ----------------------------------------------
* 1.00 xingsfdz 2019年5月4日
* ----------------------------------------------
* </pre>
*/
public class Fruitage implements Plant {
@Override
public void production() {
System.out.println("生产水果...");
}
}
蔬菜:
package com.xingsfdz.abstractfactory;
/**
*
* @类名称 Vegetables.java
* @类描述 <pre>具体植物产品:蔬菜</pre>
* @作者
* @创建时间 2019年5月4日 下午11:14:45
* @版本 1.00
*
* @修改记录
* <pre>
* 版本 修改人 修改日期 修改内容描述
* ----------------------------------------------
* 1.00 xingsfdz 2019年5月4日
* ----------------------------------------------
* </pre>
*/
public class Vegetables implements Plant {
@Override
public void production() {
System.out.println("生产蔬菜...");
}
}