`
qingzi2534
  • 浏览: 254749 次
  • 性别: Icon_minigender_2
  • 来自: 烟台
社区版块
存档分类
最新评论

设计模式之工厂方法Factory Method

阅读更多

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

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

程序包 名称 说明
framework Product 仅定义抽象方法use的抽象类
framework Factory 实现方法create的抽象类
idcard IDCard 实现方法use的抽象类
idcard IDCardFactory 实现方法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. }  
分享到:
评论
1 楼 akun_007 2007-01-17  
学习中……
沙发~~

相关推荐

Global site tag (gtag.js) - Google Analytics