溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

java如何實(shí)現(xiàn)抽象工廠模式

發(fā)布時(shí)間:2022-01-13 16:41:46 來源:億速云 閱讀:134 作者:小新 欄目:大數(shù)據(jù)

小編給大家分享一下java如何實(shí)現(xiàn)抽象工廠模式,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

抽象工廠又被稱為超級(jí)工廠 java如何實(shí)現(xiàn)抽象工廠模式

實(shí)例解釋:

  • 一個(gè)人可以有一臺(tái)電腦和一臺(tái)手機(jī),但是本人不去生成,本人只是去使用

  • 有個(gè)超級(jí)工廠(AbstractFactory)抽象工廠,它下面有兩個(gè)代工廠(1.專門生產(chǎn)手機(jī)的工廠,2.專門生產(chǎn)電腦的工廠)

  • 負(fù)責(zé)生產(chǎn)電腦的工廠,就是一個(gè)簡單工廠模式。

  • 負(fù)責(zé)生產(chǎn)手機(jī)的工廠,也是一個(gè)簡單手機(jī)工廠模式。

代碼實(shí)現(xiàn)邏輯:

  • 首先創(chuàng)建一個(gè)電腦接口--Computer,它只有draw()方法,它下面有兩個(gè)牌子,

    • Dell 實(shí)體類,實(shí)現(xiàn)了draw()

    • Lenvo 實(shí)體類,實(shí)現(xiàn)了draw()

  • 然后創(chuàng)建一個(gè)手機(jī)接口---phone,它只有call()方法,它也有兩個(gè)牌子(實(shí)體類)

    • Mi 實(shí)體類

    • HuaWei實(shí)體類

  • 然后定義一個(gè)AbstractFactory抽象工廠,它有兩個(gè)產(chǎn)品(手機(jī),電腦)

  • 手機(jī)工廠繼承抽象工廠,電腦工廠繼承抽象工廠

  • 然后定義一個(gè)產(chǎn)品工廠創(chuàng)建抽象工廠

  • 最后demo類使用產(chǎn)品工廠

代碼: 第一步 Computer,phone

public interface Computer {
	void draw();//畫圖功能
}

public interface Phone {
	void call();//打電話功能
}

第二步:小米和華為實(shí)現(xiàn)Phone接口

public class Mi implements Phone{
	@Override
	public void call() {
		System.out.println("小米手機(jī)打電話");
	}
}

public class HuaWei implements Phone{
	@Override
	public void call() {
		System.out.println("華為手機(jī)打電話");
	}
}

第三步:創(chuàng)建AbstractFactory抽象工廠,開放電腦和手機(jī)兩個(gè)接口

public abstract class AbstractFactory {
	public abstract Computer getComputer(String computer);
	public abstract Phone getPhone(String phone);
}

第四:手機(jī)工廠繼承抽象工廠 ,電腦工廠繼承抽象工廠

public class PhoneFactory extends AbstractFactory{
	@Override
	public Computer getComputer(String computer) {
		return null;
	}

	@Override
	public Phone getPhone(String phone) {
		if(phone.equalsIgnoreCase("Mi")){
			return new Mi();
		}else if(phone.equalsIgnoreCase("HuaWei")){
			return new HuaWei();
		}
		return null;
	}
}
public class ComputerFactory extends AbstractFactory{
	@Override
	public Computer getComputer(String computer) {
		if(computer == null){
			return null;
		}
		if(computer.equalsIgnoreCase("Dell")){
			return new Dell();
		}else if(computer.equalsIgnoreCase("Lenvo")){
			return new  Lenvo();
		}
		return null;
	}

	@Override
	public Phone getPhone(String phone) {
		return null;
	}
}

第5:FactoryProducer 來獲取 AbstractFactory 對象

public class FactoryProducer {
	public static AbstractFactory getFactory(String choice){
		if(choice.equalsIgnoreCase("Computer")){
			return new ComputerFactory();
		}else if(choice.equalsIgnoreCase("Phone")){
			return new PhoneFactory();
		}
		return null;
	}
}

第6:demo使用產(chǎn)品工廠

public class AbstractDemo {
	public static void main(String[] args) {
		//獲取手機(jī)工廠
		AbstractFactory phoneFactory = FactoryProducer.getFactory("Phone");
		//獲取小米手機(jī)的對象
		Phone mi = phoneFactory.getPhone("Mi");
		//調(diào)用小米的方法
		mi.call();
	}
}

以上是“java如何實(shí)現(xiàn)抽象工廠模式”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI