0
点赞
收藏
分享

微信扫一扫

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


概述:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。


1.一个系统要独立于它的产品的创建、组合和表示时。 2.一个系统要由多个产品系列中的一个来配置时。 3.当你要强调一系列相关的产品对象的设计以便进行联合使用时。 4.当你提供一个产品类库,而只想显示它们的接口而不是实现时。

 

package pack.java.IAnimalFactory;

/***
 * 动物接口工厂;
 * @author Administrator
 *
 */
public interface IAnimalFactory {
	/**
	 * 产生猫接口;
	 * @return
	 */
	public ICat createCat();
	
	/**
	 * 产生狗接口;
	 * @return
	 */
	public IDog createDog();
	
}

 

 

package pack.java.IAnimalFactory;

public interface ICat {
	/**
	 * 猫具有吃的方法;
	 */
	public void eat();
}

 

 

package pack.java.IAnimalFactory;

public interface IDog {
	/**
	 * 狗具有吃的方法;
	 */
	public void eat();
}

 

 

package pack.java.AbstractFactory;

import pack.java.AnimalModel.BlackCat;
import pack.java.AnimalModel.BlackDog;
import pack.java.IAnimalFactory.IAnimalFactory;
import pack.java.IAnimalFactory.ICat;
import pack.java.IAnimalFactory.IDog;
/**
 * 黑颜色动物实现类;
 * @author Administrator
 *
 */
public class BlackAnimalFactory implements IAnimalFactory{
	/**
	 * 产生一只黑猫;
	 */
	public ICat createCat() {
		// TODO Auto-generated method stub
		return new BlackCat();
	}

	/**
	 * 产生一只狗;
	 */
	public IDog createDog() {
		// TODO Auto-generated method stub
		return new BlackDog();
	}

}

 

 

package pack.java.AbstractFactory;

import pack.java.AnimalModel.WhiteCat;
import pack.java.AnimalModel.WhiteDog;
import pack.java.IAnimalFactory.IAnimalFactory;
import pack.java.IAnimalFactory.ICat;
import pack.java.IAnimalFactory.IDog;

public class WhiteAnimalFactory implements IAnimalFactory{

	public ICat createCat() {
		// TODO Auto-generated method stub
		return new WhiteCat();
	}

	public IDog createDog() {
		// TODO Auto-generated method stub
		return new WhiteDog();
	}
	
}

 

 

package pack.java.AnimalModel;

import pack.java.IAnimalFactory.ICat;

public class BlackCat implements ICat{

	/***
	 * 黑猫具有吃的方法;
	 */
	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("一只黑猫,正在捕捉老鼠!");
	}

}

 

 

package pack.java.AnimalModel;

import pack.java.IAnimalFactory.IDog;

public class BlackDog implements IDog{

	/**
	 * 黑狗具有吃的方法;
	 */
	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("一条黑狗,正在啃骨头!");
	}

}

 

 

package pack.java.AnimalModel;

import pack.java.IAnimalFactory.ICat;

public class WhiteCat implements ICat{

	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("一只白猫,正在吃鱼!");
	}

}

 

 

package pack.java.AnimalModel;

import pack.java.IAnimalFactory.IDog;

public class WhiteDog implements IDog{

	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("一条白狗,正在吃东西!");
	}

}

 

 

package pack.java.testdemo;

import pack.java.AbstractFactory.BlackAnimalFactory;
import pack.java.AbstractFactory.WhiteAnimalFactory;
import pack.java.IAnimalFactory.IAnimalFactory;
import pack.java.IAnimalFactory.ICat;
import pack.java.IAnimalFactory.IDog;

/**
 * 测试抽象工厂;
 * @author Administrator
 *
 */
public class TestAbstractFactory {

	/**
	 * 主方法;
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//实例化一个黑色动物工厂类,
		IAnimalFactory animalFactory = new  BlackAnimalFactory();
		
		//产生一只黑猫;
		ICat blackCat = animalFactory.createCat();
		
		//黑猫吃东西;
		blackCat.eat();
		
		//产生一只黑狗;
		IDog blackDog = animalFactory.createDog();
		
		//黑狗吃东西;
		blackDog.eat();
		
		System.out.println("");
		
		//实例化一个白色动物工厂;
		IAnimalFactory whiteAnimalFactory = new WhiteAnimalFactory();
		
		//产生一只白猫;
		ICat whiteCat = whiteAnimalFactory.createCat();
		
		//白猫吃东西的方法;
		whiteCat.eat();
		
		//产生一只白狗;
		IDog whiteDog = whiteAnimalFactory.createDog();
		
		//白狗吃东西的方法;
		whiteDog.eat();
		
	}
}

 

 

运行结果:

 

一只黑猫,正在捕捉老鼠!
一条黑狗,正在啃骨头!

一只白猫,正在吃鱼!
一条白狗,正在吃东西!

举报

相关推荐

0 条评论