/**
* 一个产品集合接口(所有动物的总称)
* @author Administrator
*
*/
public interface Animal {
/**
* 动物名称
*/
public void ItsName();
}
/**
* 抽象产品族之一 ---猫
* @author Administrator
*
*/
public abstract class Cat implements Animal {
/**
* 抽象方法
*/
public abstract void ItsName();
}
/**
* 抽象产品族之一 ---狗
* @author Administrator
*
*/
public abstract class Dog implements Animal {
/**
* 抽象方法
*/
public abstract void ItsName();
}
/**
* 具体产品 黑猫
* @author Administrator
*
*/
public class BlackCat extends Cat {
@Override
public void ItsName() {
System.out.println("i am a black cat");
}
}
/**
* 具体产品 白猫
* @author Administrator
*
*/
public class WhiteCat extends Cat {
@Override
public void ItsName() {
System.out.println("i am a white cat");
}
}
/**
* 具体产品 黑狗
* @author Administrator
*
*/
public class BlackDog extends Dog{
public void ItsName() {
System.out.println("i am a black dog");
}
}
/**
* 具体产品 白狗
* @author Administrator
*
*/
public class WhiteDog extends Dog {
@Override
public void ItsName() {
System.out.println("i am a white dog");
}
}
/**
* 工厂类
* @author Administrator
*
*/
public interface AnimalFactory {
public Animal getCat();
public Animal getDog();
}
public class BlackFactory implements AnimalFactory {
@Override
public Animal getCat() {
return new BlackCat();
}
@Override
public Animal getDog() {
return new BlackDog();
}
}
public class WhiteFactory implements AnimalFactory{
@Override
public Animal getCat() {
return new WhiteCat();
}
@Override
public Animal getDog() {
return new WhiteDog();
}
}
public class AnimalMain {
public static void main(String[] args) {
AnimalFactory af1 = new BlackFactory();
Animal cat = af1.getCat();
cat.ItsName();
Animal dog = af1.getDog();
dog.ItsName();
AnimalFactory af2 = new WhiteFactory();
Animal cat1 = af2.getCat();
cat1.ItsName();
Animal dog1 = af2.getDog();
dog1.ItsName();
}
}