設計模式-創建型模式#抽象工廠AbstractFactory
上一篇 工廠方法FactoryMethod 寫了之后感覺要寫就該把這PDF上的23種常用設計模式都寫完,所以今天又花了時間寫了一篇,其實這些都是照著書上打的,沒有任何的新鮮之處。
抽象工廠
提供一個創建一系列相關或相互依賴對象的接口,而無需指定它們的具體的類。
適用性
1、一個系統要獨立于它的產品的創建、組合和表示時。
2、一個系統要由多個產品系列的一個來配置時。
3、當你提供一個產品類庫,而只想顯示它們的接口而不是實現時。
4、當你要強調一系列相關的產品對象的設計以便進行聯合使用時。
參與者
1、AbstractFactory
聲明一個創建抽象產品對象的操作接口。
2、ConcreteFactory
實現創建具體產品對象的操作。
3、AbstractProduct
為一類產品對象聲明一個接口。
4、ConcreteProduct
定義一個將被相應的具體工廠創建的產品對象。
實現AbstractProduct接口。
5、Client
僅使用由AbstractFactory和AbstractProduct類聲明的接口。
類圖
package com.dsp;
public interface ICat {
void eat();
}
package com.dsp;
public class WhiteCat implements ICat {
@Override
public void eat() {
System.out.println("The white cat is eating!");
}
}
package com.dsp;
public class BlackCat implements ICat {
@Override
public void eat() {
System.out.println("The black cat is eating!");
}
}
package com.dsp;
public interface IDog {
void eat();
}
package com.dsp;
public class BlackDog implements IDog {
@Override
public void eat() {
System.out.println("The black dog is eating!");
}
}
package com.dsp;
public class WhiteDog implements IDog {
@Override
public void eat() {
System.out.println("The white dog is eating!");
}
}
package com.dsp;
public interface IAnimalFactory {
ICat createCat();
IDog createDog();
}
package com.dsp;
public class BlackAnimalFactory implements IAnimalFactory {
@Override
public ICat createCat() {
// TODO Auto-generated method stub
return new BlackCat();
}
@Override
public IDog createDog() {
// TODO Auto-generated method stub
return new BlackDog();
}
}
package com.dsp;
public class WhiteAnimalFactory implements IAnimalFactory {
@Override
public ICat createCat() {
// TODO Auto-generated method stub
return new WhiteCat();
}
@Override
public IDog createDog() {
// TODO Auto-generated method stub
return new WhiteDog();
}
}
控制臺輸出:
The black cat is eating!
The black dog is eating!
The white cat is eating!
The white dog is eating!

浙公網安備 33010602011771號