Factory Method模式

书上说用模版方法来生成实例,就是工厂方法模式了

而这里的工厂方法要分为两部分,一是工厂框架,二是产品框架。而这个工厂框架包括产品类和工厂类,产品框架则是产品类和工厂类的具体产品实现类和工厂实现类。所以,具体的如下面所示

框架

抽象工厂->创建抽象产品

具体实现类

具体工厂->创建具体产品类

继承关系是

抽象工厂->由具体工厂来实现

抽象产品->由具体产品来实现

下面来具体的coding

1,框架类,包括抽象产品和抽象工厂类

package factorymethod;

public abstract class ProductFactory {
    //生产产品
    public abstract Product create(String name);
    //注册产品
    public abstract void regist(Product product);
}
抽象工厂
package factorymethod;

public abstract class Product {
    //抽象方法
    public abstract void use();
}
抽象产品

2,具体产品类,包括具体产品和具体工厂

package factorymethod;
import java.util.*;

public class IdCardProductFactory extends ProductFactory {
    private List<Product> plist;
    
    
    public List<Product> getPlist() {
        return plist;
    }

    public void setPlist(List<Product> plist) {
        this.plist = plist;
    }

    @Override
    public Product create(String name) {
        return new IdCardProduct(name);
    }

    @Override
    public void regist(Product product) {
        plist.add(product);
    }

}
具体工厂
package factorymethod;

public class IdCardProduct extends Product {
    private String idName;
    
    
    public String getIdName() {
        return idName;
    }

    public void setIdName(String idName) {
        this.idName = idName;
    }

    IdCardProduct(String name){
        this.idName = name;
    }
    
    @Override
    public void use() {
        System.out.println("正在使用"+this.idName+"的身份信息");
    }

}
具体产品

3,测试类

package factorymethod;

public class maintest {

    public static void main(String[] args) {
        ProductFactory pf = new IdCardProductFactory();
        Product p = pf.create("lee");
        Product p2 = pf.create("wei");
        p.use();
        p2.use();
    }

}
测试方法
正在使用lee的身份信息
正在使用wei的身份信息
运行结果
posted @ 2015-04-10 09:00  凝荷  阅读(139)  评论(0编辑  收藏  举报