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();
}
}