3.工厂方法模式(Factory Method)
介绍:工厂方法模式主要组成部分:抽象工厂类,实现抽象工厂类的具体工厂类、抽象类和实现抽象类的具体类.
说明:每一个产品都有要由一个具体的工厂来创建,把简单工厂拆分成一个个小工厂,每个小工厂只负责单独对象的创建,职责变小了,这样第个具体工厂就可以很好的控制各个对象的初始化了.
例:
package com.factorymethod;
public interface Animal {
public void eat();
}
package com.factorymethod;
public class Bird implements Animal {
public void eat() {
System.out.println("小鸟会吃.");
}
public void fly(){
System.out.println("小鸟会飞.");
}
}
package com.factorymethod;
public class Dolphin implements Animal {
public void eat() {
System.out.println("海豚会吃.");
}
public void swim(){
System.out.println("海豚会游泳.");
}
}
package com.factorymethod;
public class Tiger implements Animal{
public void run(){
System.out.println("老虎会跑.");
}
public void eat() {
System.out.println("老虎会吃.");
}
}
package com.factorymethod;
/**
*
* @Title: Factory.java
* @Description: TODO(只负责定义创建方式的抽象工厂类)
* @author [email protected]
* @date 2010-6-2
* @version V1.0
*/
public interface Factory {
public Animal createAnimal();
}
package com.factorymethod;
/**
*
* @Title: BirdFactory.java
* @Description: TODO(具体工厂类)
* @author [email protected]
* @date 2010-6-2
* @version V1.0
*/
public class BirdFactory implements Factory{
public Animal createAnimal() {
return new Bird();
}
}
package com.factorymethod;
public class DolphinFactory implements Factory{
public Animal createAnimal() {
return new Dolphin();
}
}
package com.factorymethod;
public class TigerFactory implements Factory{
public Animal createAnimal() {
return new Tiger();
}
}
package com.factorymethod;
/**
*
* @Title: Client.java
* @Description: TODO(客户类)
* @author [email protected]
* @date 2010-6-2
* @version V1.0
*/
public class Client {
public static void main(String[] args){
Factory factory = new TigerFactory();
Animal animal = factory.createAnimal();
animal.eat();
factory = new BirdFactory();
animal = factory.createAnimal();
animal.eat();
}
}
UML: