直接上代码:

设计模式之-抽象工厂_抽象工厂

抽象农场 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("生产蔬菜...");
	}

}