隨筆-3  評論-0  文章-0  trackbacks-0

           

          設計模式之工廠模式:
          1、    掌握什么叫反射
          2、    掌握class類的作用
          3、    通過反射實例化對象
          4、    通過反射調用類中方法的操作原理
          5、    工廠設計的改進,重點掌握其思想,程序和配置相分離
          package fac.cn;
          interface Fruit{
              
          public void eat();
          }
          class Apple implements Fruit{
              
          public void eat(){
                  System.out.println(
          "吃蘋果");
              }
          }
          class Orange implements Fruit{
              
          public void eat(){
                  System.out.println(
          "吃橘子");
              }
          }

          class Factory{
              
          public static Fruit getInstance(String className){
                  Fruit f
          =null;
                  
          if(className.equals("Apple"))
                      f
          =new Apple();
                  
          else if(className.equals("Orange"))
                      f
          =new Orange();
                  
          return f;
              }
          }
          public class FactoryDemo {
              
          public static void main(String args[]){
                  Fruit fruit
          =Factory.getInstance("Apple");
                  fruit.eat();
              }

          }
          注:本程序的確實現了工廠操作。所有的問題集中在工廠操作中,因為每次只要一增加子類,則必須修改工廠。此時可以根據反射機制來完成,通過Class類來修改工廠
          如下表即為修改的工廠類和主類
          class Factory{
              
          public static Fruit getInstance(String className){
                  Fruit f
          =null;
                      
          try {
                          f
          =(Fruit)Class.forName(className).newInstance();
                      } 
                      
          catch (Exception e) {                
                          e.printStackTrace();
                      }
                  
          return f;
              }
          }
          public class FactoryDemo2 {
              
          public static void main(String args[]){
                  Fruit fruit
          =Factory.getInstance("fac2.cn.Apple");
                  fruit.eat();
              }

          }
          注:在以上操作中,工廠類完全不用修改,但是每次操作應用時,都必須輸入很長的包.類.名稱,使用時很不方便。最好的方法是通過一個別名來表示這個完成的包.類名稱,而且在類增加的時候,別名也可以自動增加。所以如果想要完成這樣的操作,可以使用屬性類配置

          class MyPropertiesOperate{//屬性操作類
              private Properties pro=null;
              
          private File file=new File("D:\\Workplace"+File.separator+"Fruit.properties");
              
          public MyPropertiesOperate(){
                  
          this.pro=new Properties();
                  
          if(file.exists()){//文件存在
                      try {
                          pro.loadFromXML(
          new FileInputStream(file)); //讀取
                      } 
                      
          catch (Exception e) {                
                      }
                  }
                  
          else this.save();
              }
              
              
          private void save(){
                  
          this.pro.setProperty("Apple""cn3.Apple");
                  
          this.pro.setProperty("Orange""cn3.Orange");
                  
          try {
                      
          this.pro.storeToXML(new FileOutputStream(this.file),"Fruit"); //讀取
                  } 
                  
          catch (Exception e) {                
                  }
              }
              
          public Properties getProperties(){
                  
          return this.pro;
              }
              
          }
          public class FactoryDemo3 {
              
          public static void main(String args[]){
                  Properties myPro
          =new MyPropertiesOperate().getProperties();    
                  Fruit fruit
          =Factory.getInstance(myPro.getProperty("Orange"));
                  fruit.eat();
              }

          }
          注:從以上的操作代碼中發現,程序通過一個配置文件,可以控制程序的執行,也就是達到了配置文件和程序相分離的目的。這個設計思想現在還在使用中,包括三大框架等。最新的設計理論,是將注釋寫入代碼之中,讓注釋起到程序控制的作用。要實現此操作,則使用Annotation完成

           

          posted on 2012-06-28 16:47 兔小翊 閱讀(111) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 太康县| 宜兰县| 安义县| 慈利县| 临湘市| 莒南县| 延边| 呼玛县| 从江县| 元江| 定州市| 重庆市| 乌拉特中旗| 都江堰市| 双江| 芷江| 奉贤区| 上饶县| 海南省| 丘北县| 华坪县| 龙里县| 彩票| 和平县| 蓝山县| 镇江市| 武强县| 天峨县| 三门县| 南郑县| 普安县| 苏尼特右旗| 英超| 桑植县| 视频| 杭州市| 宜城市| 离岛区| 东明县| 察雅县| 海晏县|