java 抽象工厂工厂_java之抽象工厂
當(dāng)一個(gè)系統(tǒng)或者系統(tǒng)的某部分需要獨(dú)立創(chuàng)建,組合使用的情況下。或者更深的通過配置文件配置 時(shí),抽象工廠幫助我們完成以上需求。
有時(shí),我們寫一套屬于自己提供的API,我們只需要提供自己的接口給用戶,該設(shè)計(jì)模式同樣適用。
使用該模式的產(chǎn)品具有一定的關(guān)聯(lián)性。通常表現(xiàn)擁有同樣的行為(方法);
1.使用該模式必須先有抽象產(chǎn)品的接口,如下:package com.vr.pro;
public interface ICat {
void eat();
}
//實(shí)現(xiàn)
package com.vr.pro.impl;
import com.vr.pro.ICat;
public class WhiteCat implements ICat {
@Override
public void eat() {
System.out.println("the white cat is eating!");
}
}
//實(shí)現(xiàn)
package com.vr.pro.impl;
import com.vr.pro.ICat;
public class BlackCat implements ICat {
@Override
public void eat() {
System.out.println("the black cat is eating!");
}
}
(IDog同理)
2.然后創(chuàng)建一個(gè)抽象工廠。它返回的只是產(chǎn)品的接口對(duì)象,如下:package com.vr.fact;
import com.vr.pro.ICat;
import com.vr.pro.IDog;
public interface IAnimalFactory {
ICat createCat();
IDog createDog();
}
3.對(duì)于實(shí)現(xiàn)了該工廠的類。只需要實(shí)現(xiàn)返回具體的產(chǎn)品對(duì)象。如下:package com.vr.fact.impl;
import com.vr.fact.IAnimalFactory;
import com.vr.pro.ICat;
import com.vr.pro.IDog;
import com.vr.pro.impl.BlackCat;
import com.vr.pro.impl.BlackDog;
public class BlackAnimalFactory implements IAnimalFactory {
@Override
public ICat createCat() {
return new BlackCat();
}
@Override
public IDog createDog() {
return new BlackDog();
}
}
package com.vr.fact.impl;
import com.vr.fact.IAnimalFactory;
import com.vr.pro.ICat;
import com.vr.pro.IDog;
import com.vr.pro.impl.WhiteCat;
import com.vr.pro.impl.WhiteDog;
public class WhiteAnimalFactory implements IAnimalFactory {
@Override
public ICat createCat() {
return new WhiteCat();
}
@Override
public IDog createDog() {
return new WhiteDog();
}
}
4.至此,抽象工廠設(shè)計(jì)完成。對(duì)于第三方客戶端,只需要調(diào)用抽象工廠子類創(chuàng)建產(chǎn)品對(duì)象即可
IAnimalFactory whiteAnimalFactory=new WhiteAnimalFactory();
IAnimalFactory blackAnimalFactory=new BlackAnimalFactory();
ICat whiteCat=whiteAnimalFactory.createCat();
IDog whiteDog=whiteAnimalFactory.createDog();
ICat blackcatCat=blackAnimalFactory.createCat();
IDog blackDog=blackAnimalFactory.createDog();
whiteCat.eat();
whiteDog.eat();
blackcatCat.eat();
blackDog.eat();
總結(jié)
以上是生活随笔為你收集整理的java 抽象工厂工厂_java之抽象工厂的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: go java web框架_java程序
- 下一篇: java宝典app_java宝典安卓版_