日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android 工厂模式创建,7、Android设计模式---(创建型设计模式)抽象工厂模式

發布時間:2025/3/12 Android 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 工厂模式创建,7、Android设计模式---(创建型设计模式)抽象工厂模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、介紹,定義

抽象工廠模式也是創建型模式之一,抽象工廠模式起源于對不同操作系統的圖形化解決方案,如不同操作系統的按鈕和文本框控件及其實現。

為創建一組相關或者相互依賴的對象提供接口,而不需要具體指定他們的具體類。

二、使用場景

一個對象族有相同的約束時可以使用抽象工廠模式。(比如Android、IOS、Windows Phone下都有短信和撥號軟件)

三、UML類圖

8.png

AbstractFactory:抽象工廠角色,聲明了一組用于創建一種產品的方法,每個方法對應生產一種產品,上面生成產品A和B。

ConcreteFactory:具體工廠角色,實現了抽象工廠中定義的創建產品的方法,生成一組具體的產品,每一個產品又位于某個產品等級中。

AbstractProduct:抽象產品角色,定義了每種產品應有的方法

ConcreteProduct:具體的產品角色,定義了具體工廠生產的具體產品對象,實現抽象產品中聲明的方法。

四、通用模式代碼

抽象的產品A和B

public abstract class AbstractProductA {

public abstract void method();

}

public abstract class AbstractProductB {

public abstract void method();

}

具體的產品A1,A2,B1,B2

public class ConcreteProductA1 extends AbstractProductA {

@Override

public void method() {

System.out.println("產品A1的方法");

}

}

public class ConcreteProductA2 extends AbstractProductA {

@Override

public void method() {

System.out.println("產品A2的方法");

}

}

public class ConcreteProductB1 extends AbstractProductB {

@Override

public void method() {

System.out.println("產品B1的方法");

}

}

public class ConcreteProductB2 extends AbstractProductB {

@Override

public void method() {

System.out.println("產品B2的方法");

}

}

抽象工廠:

public abstract class AbstractFactory {

public abstract AbstractProductA createProductA();

public abstract AbstractProductB createProductB();

}

具體的工廠1和2

public class ConcreteFactory1 extends AbstractFactory {

@Override

public AbstractProductA createProductA() {

return new ConcreteProductA1();

}

@Override

public AbstractProductB createProductB() {

return new ConcreteProductB1();

}

}

public class ConcreteFactory2 extends AbstractFactory {

@Override

public AbstractProductA createProductA() {

return new ConcreteProductA2();

}

@Override

public AbstractProductB createProductB() {

return new ConcreteProductB2();

}

}

五、簡單實現

上一篇講到,小民開了個Audi車組裝工廠。隨著小民生意越做越大,發現Q3,Q5,Q7使用的零件各不相同,他們的零件又有差別,Q3的發動機是國產的,輪胎是鐵的。Q7的發動機是外國的,輪胎是塑料的。不同的輪胎,不同的發動機,都也是一種產品類型,這時候就能用抽象產品模式:

首先 汽車工廠需要生產輪胎、發動機、制動系統這三種部件:

public abstract class CarFactory {

//輪胎

public abstract ITire createTire();

//發動機

public abstract IEngine createEngine();

//制動系統

public abstract IBrake createBrake(); //返回 制動系統 對象

}

這里我們為每一個零件定義一個接口,并分別創建兩個不同的實現類表示不同的零部件產品

public interface ITire {

//輪胎接口

void tire();

}

public class NormalTire implements ITire {

@Override

public void tire() {

System.out.println("普通輪胎");

}

}

public class SUVTire implements ITire {

@Override

public void tire() {

System.out.println("越野輪胎");

}

}

public interface IEngin {

//發動機

void engine();

}

public class DomesticEngin implements IEngin {

@Override

public void engine() {

System.out.println("國產發動機");

}

}

public class ImportEngin implements IEngin {

@Override

public void engine() {

System.out.println("進口發動機");

}

}

public interface IBrake {

//制動系統

void brake();

}

public class NormalBrake implements IBrake {

@Override

public void brake() {

System.out.println("普通制動");

}

}

public class SeniorBrake implements IBrake {

@Override

public void brake() {

System.out.println("高級制動");

}

}

具體的 不同的生產 車廠 Q3 生產廠

public class Q3Factory extends CarFactory {

@Override

public ITire createTire() {

return new NormalTire(); //返回普通的輪胎類

}

@Override

public IEngin createEngine() {

return new DomesticEngin(); //返回國產發動機

}

@Override

public IBrake createBrake() {

return new NormalBrake(); //返回一般制動

}

}

具體的 不同的生產 車廠 Q7 生產廠

public class Q7Factory extends CarFactory {

@Override

public ITire createTire() {

return new SUVTire(); //返回SUV 車胎

}

@Override

public IEngin createEngine() {

return new ImportEngin(); //返回進口輪胎

}

@Override

public IBrake createBrake() {

return new SeniorBrake(); //返回高級制動

}

}

客戶類 具體的實例化調用 生產

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//構造一個生產Q3 的工廠

CarFactory factoryQ3 = new Q3Factory();

factoryQ3.createTire().tire();

factoryQ3.createEngine().engine();

factoryQ3.createBrake().brake();

//構造一個 生產Q7 的 工廠

CarFactory factoryQ7 = new Q7Factory();

factoryQ7.createTire().tire();

factoryQ7.createEngine().engine();

factoryQ7.createBrake().brake();

}

}

結果如下

9.png

可見當需要添加Q5時,對應的零件類又要增加,這是此模式一個弊端,就是類的徒增,如果工廠類過多,勢必導致文件非常多,開發中一定要權衡。

五、模式的優缺點:

優點:

分離接口與實現,客戶端使用抽象工廠來創建需要的對象,二客戶端根本不知道具體實現的是誰,客戶端只是面向產品的接口編程而已,使其從具體的產品實現中解耦,同時基于接口與實現的分離,使抽象工廠方法模式在切換產品類時更加靈活,容易。

缺點:

一是文件的爆炸性增加,而是不太容易擴展新的產品類,因為每當我們增加一個產品類就需要修改抽象工廠,那么所以的具體工廠均會被修改。

總結

以上是生活随笔為你收集整理的android 工厂模式创建,7、Android设计模式---(创建型设计模式)抽象工厂模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。