介绍:抽象工厂模式是针对多个产品结构,它主要用于帮助用户一次创建多个不同的对象.
主要组成部分:抽象工厂类、实现抽象工厂类的具体类、抽象类和实现抽象类的具体类.
原理:UML示例---->
例子:
package com.abstractfactory;
public class AfricaBird extends Bird {
@Override
public void eat() {
System.out.println("非洲小鸟会飞.");
}
@Override
public void fly() {
System.out.println("非洲小鸟吃.");
}
}
package com.abstractfactory;
public class AfricaFactory implements Factory {
public Bird createBird() {
return new AfricaBird();
}
public Tiger createTiger() {
return new AfricaTiger();
}
}
package com.abstractfactory;
public class AfricaTiger extends Tiger {
@Override
public void eat() {
System.out.println("非老虎会吃.");
}
@Override
public void run() {
System.out.println("非老虎会跑.");
}
}
package com.abstractfactory;
public interface Animal {
public void eat();
}
package com.abstractfactory;
public class AsiaBird extends Bird {
@Override
public void eat() {
System.out.println("亚洲小鸟会飞.");
}
@Override
public void fly() {
System.out.println("亚洲小鸟吃.");
}
}
package com.abstractfactory;
public class AsiaFactory implements Factory{
public Bird createBird() {
return new AsiaBird();
}
public Tiger createTiger() {
return new AsiaTiger();
}
}
package com.abstractfactory;
public class AsiaTiger extends Tiger {
@Override
public void eat() {
System.out.println("亚老虎会吃.");
}
@Override
public void run() {
System.out.println("亚洲老虎会跑");
}
}
package com.abstractfactory;
public class Bird implements Animal{
public void eat() {
System.out.println("小鸟会吃.");
}
public void fly(){
System.out.println("小鸟会飞.");
}
}
package com.abstractfactory;
public class Client {
public static void main(String[] args) {
//亚洲动物
Factory factory = new AsiaFactory();
Tiger tiger = factory.createTiger();
tiger.eat();
Bird bird = factory.createBird();
bird.eat();
System.out.println("---------------------");
//非洲动物
factory = new AfricaFactory();
tiger = factory.createTiger();
tiger.eat();
bird = factory.createBird();
bird.eat();
}
}
package com.abstractfactory;
/**
*
* @Title: Factory.java
* @Description: TODO(抽象工厂类)
* @author awfhome@163.com
* @date 2010-6-2
* @version V1.0
*/
public interface Factory {
Tiger createTiger();
Bird createBird();
}
package com.abstractfactory;
import com.factorymethod.Animal;
public class Tiger implements Animal {
public void eat() {
System.out.println("老虎会吃.");
}
public void run(){
System.out.println("老虎会跑.");
}
}