Android 五種常見設計模式

一、觀察者模式

觀察者模式是一種行為型模式,它定義了一種一對多的關係,讓多個觀察者對象同時監聽一個主題對象。當主題對象狀態發生改變時,會自動通知所有的觀察者對象,使它們能夠及時進行響應。在Android開發中,觀察者模式常被用於一些事件的處理,例如Activity的生命周期,控件的狀態改變等。

//主題對象,可以添加、刪除、通知觀察者
public class Subject {
    private List observers = new ArrayList();

    public void attach(Observer observer) {
        observers.add(observer);
    }

    public void detach(Observer observer) {
        observers.remove(observer);
    }

    public void notifyObservers() {
        for (Observer observer : observers) {
            observer.update();
        }
    }
}

//觀察者接口
interface Observer {
    void update();
}

//具體觀察者
public class ConcreteObserver implements Observer {
    @Override
    public void update() {
        //處理事件
    }
}

二、單例模式

單例模式是一種創建型模式,它保證一個類只有一個實例,並提供一個全局訪問點。在Android開發中,一些工具類、系統服務、數據庫、全局配置等常常會使用單例模式,以保證它們在整個應用程序中只有一個實例。

//餓漢式單例模式
public class Singleton {
    private static final Singleton instance = new Singleton();
    private Singleton() {}
    public static Singleton getInstance() {
        return instance;
    }
}

三、工廠模式

工廠模式是一種創建型模式,它定義了一個工廠方法用來創建對象,而不是通過new關鍵字直接實例化對象。在Android開發中,工廠模式常被用於控制對象的創建過程,以便根據不同的參數返回不同的對象類型。

//工廠接口
public interface Factory {
    Product createProduct();
}

//具體工廠1
public class ConcreteFactory1 implements Factory {
    @Override
    public Product createProduct() {
        return new ConcreteProduct1();
    }
}

//具體工廠2
public class ConcreteFactory2 implements Factory {
    @Override
    public Product createProduct() {
        return new ConcreteProduct2();
    }
}

//產品接口
public interface Product {
}

//具體產品1
public class ConcreteProduct1 implements Product {
}

//具體產品2
public class ConcreteProduct2 implements Product {
}

四、建造者模式

建造者模式是一種創建型模式,它將複雜對象的構建與表示分離開來,使得同樣的構建過程可以創建不同的表示。在Android開發中,建造者模式常被用於構建複雜的對象,例如AlertDialog、Notification、Intent等。

//產品類
public class Product {
    //屬性
    private String partA;
    private String partB;
    private String partC;

    //構造方法
    public Product(String partA, String partB, String partC) {
        this.partA = partA;
        this.partB = partB;
        this.partC = partC;
    }

    //getter、setter方法
    //...
}

//抽象建造者
public abstract class Builder {
    protected Product product = new Product();

    public abstract void buildPartA();
    public abstract void buildPartB();
    public abstract void buildPartC();

    public Product getResult() {
        return product;
    }
}

//具體建造者
public class ConcreteBuilder extends Builder {
    @Override
    public void buildPartA() {
        product.setPartA("A");
    }

    @Override
    public void buildPartB() {
        product.setPartB("B");
    }

    @Override
    public void buildPartC() {
        product.setPartC("C");
    }
}

//指揮者
public class Director {
    private Builder builder;

    public Director(Builder builder) {
        this.builder = builder;
    }

    public Product construct() {
        builder.buildPartA();
        builder.buildPartB();
        builder.buildPartC();
        return builder.getResult();
    }
}

五、適配器模式

適配器模式是一種結構型模式,它將一個類的接口轉換成客戶端希望的另一個接口。在Android開發中,適配器模式常被用於將一些不兼容的類或接口進行鏈接,以便能夠協同工作。

//適配者接口
public interface Adaptee {
    void doSomething();
}

//適配者實現類
public class AdapteeImpl implements Adaptee {
    @Override
    public void doSomething() {
        //具體操作
    }
}

//目標接口
public interface Target {
    void doSomething();
}

//適配器
public class Adapter implements Target {
    private Adaptee adaptee;

    public Adapter(Adaptee adaptee) {
        this.adaptee = adaptee;
    }

    @Override
    public void doSomething() {
        adaptee.doSomething();
    }
}

以上五種設計模式是Android開發中常見的設計模式,它們分別具有不同的應用場景,可以提高代碼的復用性,可讀性和可維護性。在實際開發中,我們可以根據具體的業務需求選擇合適的設計模式來進行開發,從而使我們的程序更加高效、簡潔和可靠。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/186347.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-27 05:45
下一篇 2024-11-27 05:45

相關推薦

  • 手機安全模式怎麼解除?

    安全模式是一種手機自身的保護模式,它會禁用第三方應用程序並使用僅限基本系統功能。但有時候,安全模式會使你無法使用手機上的一些重要功能。如果你想解除手機安全模式,可以嘗試以下方法: …

    編程 2025-04-28
  • Android ViewPager和ScrollView滑動衝突問題

    Android開發中,ViewPager和ScrollView是兩個常用的控件。但是當它們同時使用時,可能會發生滑動衝突的問題。本文將從多個方面介紹解決Android ViewPa…

    編程 2025-04-28
  • Android如何點擊其他區域收起軟鍵盤

    在Android應用中,當輸入框獲取焦點彈出軟鍵盤後,我們希望能夠點擊其他區域使軟鍵盤消失,以提升用戶體驗。本篇文章將說明如何實現這一功能。 一、獲取焦點並顯示軟鍵盤 在Andro…

    編程 2025-04-28
  • Qt State Machine與狀態機模式

    本文將介紹Qt State Machine和狀態機模式在Qt中的實現。Qt提供了QStateMachine和QState兩個類,可以方便地實現狀態機模式,並且能有效地處理複雜的、多…

    編程 2025-04-27
  • Python常見異常類型解析

    本文將闡述Python常見異常類型,包括其定義、分類及處理方法。 一、語法錯誤 語法錯誤是指在Python代碼編寫過程中出現的錯誤,這是一種最常見的錯誤類型。當Python解釋器無…

    編程 2025-04-27
  • 顯示C++設計模式

    本文將詳細介紹顯示C++設計模式的概念、類型、優點和代碼實現。 一、概念 C++設計模式是在軟件設計階段定義,用於處理常見問題的可重用解決方案。這些解決方案是經過測試和驗證的,並已…

    編程 2025-04-27
  • Android Studio HUD 實現指南

    本文將會以實例來詳細闡述如何在 Android Studio 中使用 HUD 功能實現菊花等待指示器的效果。 一、引入依賴庫 首先,我們需要在 build.gradle 文件中引入…

    編程 2025-04-27
  • Android和Vue3混合開發方案

    本文將介紹如何將Android和Vue3結合起來進行混合開發,以及其中的優勢和注意事項。 一、環境搭建 在進行混合開發之前,需要搭建好相應的開發環境。首先需要安裝 Android …

    編程 2025-04-27
  • Centos7進入單用戶模式的解釋

    本文將介紹如何在Centos7中進入單用戶模式,並從以下幾個方面進行詳細的闡述。 一、Centos7進入單用戶模式的解答 在Centos7中進入單用戶模式需要執行以下步驟: 1. …

    編程 2025-04-27
  • Android Java Utils 可以如何提高你的開發效率

    Android Java Utils 是一款提供了一系列方便實用的工具類的 Java 庫,可以幫助開發者更加高效地進行 Android 開發,提高開發效率。本文將從以下幾個方面對 …

    編程 2025-04-27

發表回復

登錄後才能評論