天天看點

GOF23設計模式之工廠方法模式的實作

package com.bjsxt.cn.factorymethod;      
public class Audi implements Car {      
 @Override
 public void run() {
  System.out.println("奧迪在跑");
  
 }
 
}      
package com.bjsxt.cn.factorymethod;      
public class AudiFactory implements CarFactory {      
 @Override
 public Car createCar() {
  
  return new Audi();
 }
 
}
      
package com.bjsxt.cn.factorymethod;      
public class Byd implements Car {      
 @Override
 public void run() {
  System.out.println("比亞迪在跑");
  
 }
 
}
      
package com.bjsxt.cn.factorymethod;      
public class BydFactory implements CarFactory {      
 @Override
 public Car createCar() {
  
  return new Byd();
 }
 
}
      
package com.bjsxt.cn.factorymethod;      
public interface Car {
 public void run();
}
      
package com.bjsxt.cn.factorymethod;      
public interface CarFactory {
 public  Car createCar();
}
      
/**
 * 時間:2015年3月29日10:16:30
 * 源程式的作用:測試工廠方法模式
 * 這種工廠方法模式中的特點如下:
 *  在該模式組織中,具有很多的工廠類。(當然他們可以有一個工廠的接口,通過這個接口組織每個工廠類的功能)
 *  我們要在這中組織中增加新的類,比如說benchi,我們的做法如下,先在包中增加類型Benchi,然後相應的增加相應類型的
 *  工廠,(BenchiFactory 一般來講也要實作相應的工廠接口)。是以,這種組織結構使得我們不必修改已有類型,而隻需要擴充(
 *  增加一對類來完成增添相應的類型)換句話講,這是符合OCP原則的。(也就是開閉原則。)
 * 
 */
package com.bjsxt.cn.factorymethod;      
public class Client {
 public static void main(String[] args) {
  Car c1 = new AudiFactory().createCar();
  c1.run();
  
  new BydFactory().createCar().run();
 }
}

      

繼續閱讀