设计模式之工厂方法Factory Method

上一节的模版方法是在父类建立处理逻辑的大纲骨架,而在子类补充具体的处理内容,如果把这个Pattern应用在产生对象实例方面,就是本节的学习重点,工厂模式。

这个程序示例主要是建立一个生产身份证的工厂。

程序包名称说明
frameworkProduct仅定义抽象方法use的抽象类
frameworkFactory实现方法create的抽象类
idcardIDCard实现方法use的抽象类
idcardIDCardFactory实现方法createProduct,egisterProduct的类
 Main测试类

Product抽象类
  1. package  framework;   
  2. public abstract class Product {   
  3.    public  abstract void use();   
  4.  }   
  5. }  
Factory 抽象类
  1. package  framwork ;   
  2. public abstract  class Factory {   
  3.  public  final  Product create(String owner) {   
  4.    Product  p  = createProduct(owner);   
  5.    registerProduct(p);   
  6.    return p;   
  7.  }   
  8.  protected  abstract Product  createProduct(String owner);   
  9.  protected abstract void registerProduct(Product product);   
  10. }  
IDCard 子类
  1. package  idcard;   
  2. import framework.*;   
  3. public class IDCard extends Product {   
  4.   private  String owner;   
  5.   IDCard(String owner) {   
  6.     System.out.println("建立"+owner+"的卡。");   
  7.     this.owner = owner ;   
  8.     }   
  9.   public void use () {   
  10.     System.out.println("使用"+owner + " 的卡。");   
  11.   }   
  12.   public String getOwner() {   
  13.     return owner;   
  14.   }   
  15. }  
IDCardFactory 子类
  1. package idcard;   
  2. import frameWork.*;   
  3. import java.util.*;   
  4. public class IDCardFactory extrends Factory {   
  5.    private Vector owners = new Vector();   
  6.    protected  Product createrProduct (String owner) {   
  7.      return new IDCard(owner);   
  8.    }   
  9.    protected void registerProduct(Product product) {   
  10.      owners.add(((IDCard)product).getOwner());   
  11.    }   
  12.    public Vector getOwner() {   
  13.      return owners;   
  14.  }   
  15. }   
Main测试类
  1. import framwork.*;   
  2. import idcard.*;   
  3. public class Main {   
  4.   public static void main(String args[]) {   
  5.     Factory factory = new IDCardFactory();   
  6.     Product card1 = factory.create("qingzi2534");   
  7.     Product card2 = factory.create("javaeye");   
  8.     card1.use();   
  9.     card2.use();   
  10.  }   
  11. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值