android项目中实用的设计模式和思想

在大二下的学期中,我学习了软工专业必修课之一的设计模式,教材是《设计模式》(GOF,语言为C++)。这本书一共介绍了23种设计模式,但因为是考试只考重要的几种设计模式的原因(也应该包括自己C++不够熟练,GOF的书C++代码太抽象导致很难理解),所以现在只对其中一些模式熟悉,如策略、观察者,目前准备买一本《Head First设计模式》暑假仔细看一看。

目前,我正在一个团队里边进行android开发工作。在写代码的同时,突然想到是否可以应用不同的设计模式来达到优化结构、提升效率的效果,于是在根据自己的记忆和网上的知识,将android实用的设计模式记录下来。

  • Builder模式:比如AlertDialog.Builder; 创建一个AlertDiaolog就用到了Builder模式,如
    new AlertDialog.Builder(context).setTitle("you are invited!").setIcon(
                   android.R.drawable.ic_dialog_info).setMessage("are you sure?").setPositiveButton("yes", new DialogInterface.OnClickListener() {
               @Override
               public void onClick(DialogInterface dialog, int which) {
                   Binding();       
                   
               }
           })
                   .setNegativeButton("no", new DialogInterface.OnClickListener() {
                       @Override
                       public void onClick(DialogInterface dialog, int which) {
    
                       }
                   }).show();
    
    }
    简单模拟Android中AlertDialog的Builder设计模式





  • 适配器模式:比如GridView、ListView与Adapter; 

    最常用的,我们在使用ListView的时候,一般会创建当前的一个类,包含当前ListView的成员,然后添加相应的适配器的类,这里就用到了适配器模式

    Android设计模式系列(9)--SDK源码之适配器模式



  • 命 令模式:比如Handler.post;意图:将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化;对请求排队或记录日志,以及支持可撤销的操作
    动机:将”发出请求的对象”和”接收与执行这些请求的对象”分隔开来。 常常在新线程中使用。
    命令模式下的异步消息处理(Handler,Message,Looper,Thread)



  • 享 元模式:比如Message.obtain;

    在JAVA语言中,String类型就是使用了享元模式。String对象是final类型,对象一旦创建就不可改变。在JAVA中字符串常量都是存在常量池中的,JAVA会确保一个字符串常量在常量池中只有一个拷贝。

    例Android和设计模式:享元模式



  • 单 例模式:比如InputMethodManager.getInstance

    单例模式,顾名思义,就是确保应用只有一个实例

    例Android源码学习之单例模式应用



  • 观察者模式:比如ContentObserver;

     观察者模式:记得老师在讲这个模式的时候,用了一个生动的例子:有一家报纸媒体,有许多人订阅这个报纸,然后这家报纸媒体一有新内容就对已订阅的人逐一发送邮件,进行通知。         

    将一个系统分割成一个一些类相互协作的类有一个不好的副作用,那就是需要维护相关对象间的一致性。我们不希望为了维持一致性而使各类紧密耦合,这样会给维护、扩展和重用都带来不便。观察者就是解决这类的耦合关系的。

    例Android中内容观察者的使用---- ContentObserver类详解
  • 抽象工厂模式:比如BaseActivity,

    相信许多人和我一样,不能分别抽象工厂模式和工厂模式的区别。最近,我在知乎上看见了了一个答案可以帮助理解:

    工厂方法模式: 一个抽象产品类,可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类只能创建一个具体产品类的实例。 抽象工厂模式: 多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类可以创建多个具体产品类的实例。 区别: 工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。 工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。 

    具体的android开发例子 可以看看链接中的例子

    例Android Ap 开发 设计模式第八篇:抽象工厂模式
  • 你可能感兴趣的:(java,设计模式,android)