java设计模式---Factory Method Pattern---工厂方法模式

Factory Method 工厂方法---建立对象实例交给子类
Template Method Pattern是在父类建立处理逻辑的大纲骨架,而在子类补充具体的处理内容。把这个Pattern应用在生产对象实例方面,就是Factory Methond Pattern.

程序示例


Product类和Factory类属于framework包。这两个类负责建立产生对象实例大纲(框架)的功能。
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就可以了。
在实际过程中,设计师应把设计模式完整的告诉给后期维护人员,否则经过维护可能与初衷渐行渐远。



你可能感兴趣的:(java设计模式---Factory Method Pattern---工厂方法模式)