结构图
工程结构图
其中framework是对客户端开放的抽象层,也就是抽象工厂和抽象产品,另外两个是具体的实现。
/** * 抽象工厂 * * Created by Administrator on 2018/5/15 0015. */ public abstract class Factory { public final Product create(String owner){ Product p =createProduct(owner); registerProduct(p); return p; } //创建抽象产品的抽象方法,同一返回抽象产品,由具体的抽象工厂实现 protected abstract Product createProduct(String owner); protected abstract void registerProduct(Product owner); }
/** * 抽象产品 * * Created by Administrator on 2018/5/15 0015. */ public abstract class Product { public abstract void user(); private String name; public Product(String name) { this.name = name; System.out.println("创建"+name+"产品"); } public String getName() { return name; } public void setName(String name) { this.name = name; } }
/** * 具体的工厂,返回具体的产品。 * * Created by Administrator on 2018/5/15 0015. */ public class IDCardFactory extends Factory { //实现创建产品的抽象方法,返回具体产品 @Override protected Product createProduct(String owner) { return new IDCardProduct(owner); } @Override protected void registerProduct(Product owner) { System.out.println("注册"+owner.getName()+"产品"); } }
/** * 具体的抽象产品 * * Created by Administrator on 2018/5/15 0015. */ public class IDCardProduct extends Product{ IDCardProduct(String name) { super(name); } @Override public void user() { System.out.println("用了"+getName()+"的身份证"); } }