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/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

发表回复

登录后才能评论