工廠方法模式原理圖:

具體實現代碼:
~~~
package com.designpattern.factorymethod;
public interface FactoryMethod {
public Animal createAnimal();
}
~~~
~~~
package com.designpattern.factorymethod;
public class DolphinFactory implements FactoryMethod {
@Override
public Animal createAnimal() {
return new Dolphin();
}
}
~~~
~~~
package com.designpattern.factorymethod;
public class TigerFactory implements FactoryMethod {
@Override
public Animal createAnimal() {
return new Tiger();
}
}
~~~
~~~
package com.designpattern.factorymethod;
public interface Animal {
public void eat();
}
~~~
~~~
package com.designpattern.factorymethod;
public class Dolphin implements Animal {
@Override
public void eat() {
System.out.println("Dolphin is eating");
}
public void swim() {
System.out.println("Dolphin is swimming");
}
}
~~~
~~~
package com.designpattern.factorymethod;
public class Tiger implements Animal {
@Override
public void eat() {
System.out.println("Tiger is eating");
}
public void run() {
System.out.println("Tiger is running");
}
}
~~~
~~~
package com.designpattern.factorymethod;
public class Client {
public static void main(String[] args) {
FactoryMethod factory = new TigerFactory();
Animal tiger = factory.createAnimal();
tiger.eat();
factory = new DolphinFactory();
Animal dolphin = factory.createAnimal();
dolphin.eat();
}
}
~~~
在工廠方法模式中,客戶端不在負責對象的創建,而是把這個責任交給了具體的工廠類,客戶端只負責對象的調用,從而明確各個類的職責。
如果有新的產品加進來,只需要新增加一個具體的創建產品的工廠類和具體的產品類就可以了,不會影響但原來的其他的代碼,代碼量也不會變大,后期維護更加容易,增強了系統的可擴展性。
但是使用這個模式的時候而外地編寫代碼,增加了工作量。
- 前言
- 前言(目錄、源碼、資料)
- (一)簡單工廠模式(SimpleFatory)
- (二)工廠方法模式(FactoryMethod)
- (三)抽象工廠模式(AbstractFactory)
- (四)創建者模式(Builder)
- (五)原型模式(Prototype)
- (六)單例模式(Singleton)
- (七)外觀模式(Facade)
- (八)適配器模式(Adapter)
- (九)代理模式(Proxy)
- (十)裝飾模式(Decorator)
- (十一)橋模式(birdge)
- (十二)組合模式(Composite)
- (十三)享元模式(Flyweight)
- (十四)模板方法模式(Template)
- (十五)觀察者模式(Observer)
- (十六)狀態模式(State)