設計模式之簡單工廠模式加反射

       簡單工廠加反射是OCP原則的很好體現。網上已經有不少的例子了,可是這種東西,只有本身想出一個例子,纔算是本身的。java

       下面的代碼中一個五個類。ide

        TestSimpleFactory是用來測試的驅動。                                                            測試

        IAnimal是一個接口,聲明瞭一個動物類的行走go的方法。spa

       Chicken實現了IAnimal接口,表示小雞,Chicken實現go。只是簡單輸出Chicken Run。小雞的走的方式是奔跑。對象

        Duck也實現了IAnimal接口,表示小鴨,Duck實現go。只是簡單輸出Duck。小鴨的走的方式是游泳。blog

        AnimalFactory是一個簡單工廠,用來生產小雞或小鴨。接口

       TestSimpleFactory.javaget

public class TestSimpleFactory {      string

      public   static   void  main(String[] args) {  
  1.     PropertyReader reader=new PropertyReader("factory.properties");  
  2.     String type=reader.getProperty("factory");  
  3.     IAnimal animal=AnimalFactory.createAnimal(type);  
  4.     animal.go();  
  5.   }  
  6.      
  7. }  

 IAnimal.javait

  
  
  
  
  1. public interface IAnimal {  
  2.    void go();  

Chicken.java

  
  
  
  
  1. public class Chicken implements IAnimal{  
  2.  
  3.     public void go() {  
  4.         System.out.println("Chicken Run");  
  5.     }  
  6.    

Duck.java

  
  
  
  
  1. public class Duck implements IAnimal {  
  2.  
  3.     public void go() {  
  4.       System.out.println("Duck Swim");  
  5.     }  
  6.  

AnimalFactory.java 

  
  
  
  
  1. public class AnimalFactory {  
  2.      
  3.     public static IAnimal createAnimal(String name)  
  4.        {  
  5.            try {  
  6.             Class c=Class.forName(name);  
  7.             return (IAnimal)c.newInstance();  
  8.         } catch (ClassNotFoundException e) {  
  9.             System.out.println("This class doesn't exsist!");  
  10.             e.printStackTrace();  
  11.         } catch (InstantiationException e) {  
  12.             System.out.println("This class can't be instantiated!");  
  13.             e.printStackTrace();  
  14.         } catch (IllegalAccessException e) {  
  15.             e.printStackTrace();  
  16.         }  
  17.            return null;  
  18.        }  
  19. }  

其中具體要建立的對象防止factory.properties中。

動物的子類實例化的時候用到了反射。

factory.properties中的內容爲:

  
  
  
  
  1. factory=neu.swc.tzy.Car 

屬性文件讀取方法見:http://snowteng17.blog.51cto.com/1532294/330459

相關文章
相關標籤/搜索