博客
关于我
Android 基础理论 day01
阅读量:807 次
发布时间:2019-03-25

本文共 1665 字,大约阅读时间需要 5 分钟。

单件模式(Singleton)与适配器模式(Adapter)的设计技巧

单件模式(Singleton)

单件模式通过确保类只有一个实例来优化资源利用。其核心包括:

  • 静态构造方法:防止多个实例的创建
  • 静态实例变量:存储唯一的实例
  • 静态获取方法:确保只有这个实例被获取
  • 单件模式可实现懒汉或饿汉两种方式,实现上线程安全注意事项时需同步关键字。

    适配器模式(Adapter)

    适配器设计用于兼容不同系统或数据格式。其特点为扩展性和灵活性。

    示例:笔记本电脑与鼠标的适配器,通过适配器将不同品牌的鼠标集成统一接口。

    实现示例:

    public class LenovoThinkPad {    public void setMouse(MouseAdapter mouse) {        this.mouse = mouse;    }    MouseAdapter mouse;}

    观察器模式(Observer)

    观察器模式用于监控数据变化,适用于需要及时响应数据变化的场景。

    开发要点

  • ** Observable**:触发变化的对象
  • Observer:接收数据变化通知
  • 示例:数据更新时自动触发业务逻辑执行。

    代码风格对比(BS vs CS)

    j2EE:

    • 容器解析配置文件
    • 线程封装
    • 代码逐行处理

    优点:明确性高,维护简单。

    Android:

    • 代码结构灵活
    • 注重设计理解
    • 关注方法执行条件

    实际应用:

    -otlinmize null checker-返回类型清晰

    事件驱动模型(Event-Driven Model)

    事件源与事件处理器

    每个事件源可绑定多个监听器,事件处理器将数据参数化。

    事件参数意义

    lack of position parameter 导致难以处理事件

    代码实现示例:

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {    @Override    public void onItemClick(AdapterView
    parent, View view, int position, long id) { NewInfo info = list.get(position); Toast.makeText(getBaseContext(), info.title, Toast.LENGTH_LONG).show(); }});

    事件处理方式对比

  • 匿名内部类

    add.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {        System.out.println("----------我被点了------------");    }});
  • 实现方式

    public class MainActivity2 extends Activity implements View.OnClickListener {    @Override    public void onClick(View v) {        System.out.println("点击事件的处理代码....");    }}
  • 内部类

    private class AddListenr implements View.OnClickListener {    @Override    public void onClick(View v) {        System.out.println("点击事件的处理代码....");    }}
  • 属性配置

    对应的方法:

    public void update(View view) {    // ...}
  • 通过以上方式,理解如何灵活处理事件并通过参数控制事件处理逻辑,适合复杂场景需求。

    转载地址:http://qlsyk.baihongyu.com/

    你可能感兴趣的文章
    Navicat因导入的sql文件中时间数据类型有参数而报错的原因(例:datetime(3))
    查看>>
    Navicat如何连接MySQL
    查看>>
    navicat导入.sql文件出错2006- MySQLserver has gone away
    查看>>
    Navicat导入海量Excel数据到数据库(简易介绍)
    查看>>
    Navicat工具Oracle数据库复制 or 备用、恢复功能(评论都在谈论需要教)
    查看>>
    Navicat工具中建立数据库索引
    查看>>
    navicat工具查看MySQL数据库_表占用容量_占用空间是多少MB---Linux工作笔记048
    查看>>
    navicat怎么导出和导入数据表
    查看>>
    Navicat怎样同步两个数据库中的表
    查看>>
    Navicat怎样筛选数据
    查看>>
    Navicat报错connection is being used
    查看>>
    Navicat报错:1045-Access denied for user root@localhost(using passwordYES)
    查看>>
    Navicat控制mysql用户权限
    查看>>
    navicat操作mysql中某一张表后, 读表时一直显示正在载入,卡死不动,无法操作
    查看>>
    Navicat连接mysql 2003 - Can't connect to MySQL server on ' '(10038)
    查看>>
    Navicat连接mysql数据库中出现的所有问题解决方案(全)
    查看>>
    Navicat连接Oracle出现Oracle library is not loaded的解决方法
    查看>>
    Navicat连接Oracle数据库以及Oracle library is not loaded的解决方法
    查看>>
    Navicat连接sqlserver提示:未发现数据源名并且未指定默认驱动程序
    查看>>
    navicat连接远程mysql数据库
    查看>>