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的身份信息