龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

Java设计模式例子FactoryMethodPattern

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
//Creator.Java public abstract class Creator { /** * looks like a factory * contains some prodUCts and some process methods */ protected Product duct; abstract String processProduct(); abstract String processProductSpecial(); public String

  //Creator.Java
  
  public abstract class Creator
  {
  /**
   * looks like a factory
   * contains some prodUCts and some process methods
   */
  protected Product duct;
  abstract String processProduct();
  abstract String processProductSpecial();
  public String Operation()
  {
  return processProduct(); // FactoryMethod for implemention;
  }
  }
  
  //ConcreteProduct.java
  
  public class ConcreteProduct extends Product
  {
  public ConcreteProduct()
  {
  System.out.println("construct the ConcreteProduct object");
  }
  public String makeString(String str)
  {
  return "This is the product after processing:"+str;
  }
  }
  
  //Product.java
  public abstract class Product
  {
  public abstract String makeString(String str);
  }
  
  //ConcreteCreatorA.java
  
  public class ConcreteCreatorA extends Creator
  {
  /**
   * You can write some other class like this to override
   * the same methods do diffrent thing;
   */
  public ConcreteCreatorA()
  {
  duct=new ConcreteProduct();
  System.out.println("instanced a product");
  
  }
  public String processProduct()
  {
  System.out.println("product A:");
  return duct.makeString("Make @#a product");
  
  }
  public String processProductSpecial()
  {
  System.out.println("special product B:");
  //add another method here
  return duct.makeString("Make Special @#B product");
  }
  }
  
  //TestFactoryMethod.java
  public class TestFactoryMethod
  {
  public TestFactoryMethod()
  {
  }
  public static void main(String[] arg)
  {
  ConcreteCreatorA cc=new ConcreteCreatorA();
  System.out.println(cc.Operation());
  System.out.println(cc.processProductSpecial());
  }
  }
  
精彩图集

赞助商链接