Factory Method 工厂方法---建立对象实例交给子类
Template Method Pattern是在父类建立处理逻辑的大纲骨架,而在子类补充具体的处理内容。把这个Pattern应用在生产对象实例方面,就是Factory Methond Pattern.
IDCard类和IDCardFactory类则处理实际的内容,属于idcoard包的一部分。
本Pattern用到了Template Method Pattern
用处:框架与内容
如果想利用同一个框架建立不同的产品和工厂,这是完全不用修改Factory和Product,而只要建立**Factory以及**Procut就可以了。
在实际过程中,设计师应把设计模式完整的告诉给后期维护人员,否则经过维护可能与初衷渐行渐远。
Template Method Pattern是在父类建立处理逻辑的大纲骨架,而在子类补充具体的处理内容。把这个Pattern应用在生产对象实例方面,就是Factory Methond Pattern.
程序示例
IDCard类和IDCardFactory类则处理实际的内容,属于idcoard包的一部分。
Main类是测试用类。
//Product类
//product类
public abstract class Product
{
public abstract void use();
}
//Factory类
public abstract class Factory
{
public final Product create(String string)
{
Product p = createProduct(owner);
registerProduct(p);
return p;
}
protected abstract Product createProduct(String owner);
protected abstract void registerProduct(Product product);
}
//IDCard类
Public class IDCard extends Product
{
private String owner;
IDCard(String owner)
{
System.out.println("建立"+owner+"的卡");
this.owner = owner;
}
public void use()
{
System.out.println("使用"+owner+"的卡");
}
public String getOwner()
{
return owner;
}
}
//IDCardFactory类
public class IDCardFactory extends Factory
{
private Vector owners = new Vector();
protected Product createProduct(String owner)
{
return new IDCard(owner);
}
protected void registerProduct(Product product)
{
owners.add(((IDCard)product).getOwner());
}
public Vector getOwners()
{
return owners;
}
}
//Main类
public class Main
{
public static void main(String[] args)
{
Factory factory = new IDCardFactory();
Product card1 = factory.create("changbin");
Product card2 = factory.create("daniel");
card1.use();
card2.use();
}
}
本Pattern用到了Template Method Pattern
用处:框架与内容
如果想利用同一个框架建立不同的产品和工厂,这是完全不用修改Factory和Product,而只要建立**Factory以及**Procut就可以了。
在实际过程中,设计师应把设计模式完整的告诉给后期维护人员,否则经过维护可能与初衷渐行渐远。