结构图
工程结构图
其中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()+"的身份证");
}
}