随笔 - 0, 文章 - 3, 评论 - 0, 引用 - 0
数据加载中……

设计模式之工厂模式(Factory)

工厂模式是在实际应用中采用的模式.所谓工厂模式,在形式上就是代替了我们平时所使用的New操作,把由New生成对象的操作交由工厂完成,这样做的最大好处是达到上层应用和下层具体实现解耦的目的.
实例:
/**
 * yangxh_520@yahoo.com.cn
 * @author mymy5
 * 2007.09.18
 */
(1)抽象类AbstactClassTest

package cn.yxh.shejimoshi.factory;

public abstract class AbstactClassTest {
 public void printSomething(){};//抽象方法,打印什么
}
(2)抽象类的实现类AbstactClassTestImpl

package cn.yxh.shejimoshi.factory;

public class AbstactClassTestImpl extends AbstactClassTest {
 public void printSomething(){       //实现抽象类的抽象方法
  System.out.println("工厂模式--抽象方法实现类打印!");
 };

}
(3)抽象工厂InterfaceTest ,用来生成具体的工厂

package cn.yxh.shejimoshi.factory;

public interface InterfaceTest {
 public AbstactClassTest instance(); //抽象方法
}

(4)工厂的具体实现类InterfaceTestImple

package cn.yxh.shejimoshi.factory;

public class InterfaceTestImple implements InterfaceTest {

 public AbstactClassTest instance() { //抽象方法的实现,负责对象的生成
  return new AbstactClassTestImpl();
 }

}

(4)测试类Test

package cn.yxh.shejimoshi.factory;


public class Test {

 public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
  InterfaceTest i = new InterfaceTestImple();  //生成工厂
  AbstactClassTest a= i.instance();                 //工厂生成对象
  a.printSomething();
  
  Class c  = Class.forName("cn.yxh.shejimoshi.factory.AbstactClassTestImpl"); //生成对象的其他方法
  System.out.println(c.getName());
  AbstactClassTestImpl asd = (AbstactClassTestImpl)c.newInstance();                //使用class的newInstance来生成方法
  asd.printSomething();
  
 }
}
先生成工厂,用工厂生成对象,用到的始终是对象的抽象类,当改写下层实现时不影响上层使用,


 

posted on 2007-09-18 09:21 杨显华 阅读(96) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: