zoukankan      html  css  js  c++  java
  • Android开发之Java设计模式

     对于很多C/C++程序员初入Android开发来说,如果你没有认证学习过Java的设计模式,不理解托管语言的OOP设计方法,可能你的应用变得很结构化,对于项目管理、架构扩展来说将会存在很多问题,Android123参看了目前国内很多应用发现很多代码完全就不是一个Java程序员写出来的,虽然能用但是这样设计对于日后的维护等方面将会有很严重的问题.

      目前注明的主要有23种设计模式,就常规的Java设计模式Android开发网给大家应该掌握的主要有以下:

      一、创建型模式

      1. 工厂方法模式

      2. 单例模式

      3. 生成器模式

     二、行为型模式

      1. 迭代器模式

      2. 责任链模式

      3. 观察者模式

      4. 模板方法模式

     三、结构型模式

      1. 代理模式

       2. 外观模式

      由于设计模式讲解较费时,具体的Android123分多个章节具体描述,同时希望初入Java开发的网友先深刻了解下Java的抽象类、接口和继承相关的问题,以便理解今后相关的内容。

    今天我们就Android开发中的一些设计模式做一些基础性的掌握,在上一次的 Android开发之Java设计模式入门篇 中我们提到了一些有关 Java基础内容,本次就Android项目的架构设计相关内容做分析:

      1. 静态工厂方法

       静态工厂方法可以算是工厂方法加单例模式的整合在Android平台上,由于Android的Context可以很好的传递实例,静态工厂方法可以提到传统的类构造器,对于一些逻辑的服务提供类可以考虑这样的设计,比如文件下载、图片裁剪等操作。

      2. Java的类访问权限

       对于程序的可靠性而言,成员变量尽量私有,通过暴漏公开的方法来访问这些私有成员,提供类似getXXX和setXXX这样的方法,不仅是Java,这点C#对于属性的操作概念在Dot Net上已经深入人心,好处就是可以阻止继承后的访问换乱问题。

      3. 使用枚举替代常量

       Java在JDK 1.5开始加入了enum枚举类,相对于常规的final int这样的定义一些常量更简单安全,毕竟常量是一堆类似整形的数值,打印起来没有过多的意义,枚举对于继承后访问的清晰度可以很好的杜绝隐患发生。

      4. 使用列表优先于数组

      Java的集合类很方便,使用List类的列表在开销上比Object [ ] 这样的数组大,但是对于泛型的支持而言更好用强大。也可以避免一些不必要的错误,比如

      cwjObject [] obj= new int[1];

      obj[1] = "android开发网测试"; //这样会在运行时抛出类似ArrayStoreException这样的异常。

      而使用列表则为:

      List<cwjObject> obj=new ArrayList<int>();

     obj.add("android123测试"); // 由于传入列表的是字符串,和构造时类型的int不同,在编译时就提示错误,可以避免一些不必要的情况发生。

      5. Java的foreach代替for

      Java的foreach仍然使用for来写,这点和C#直接用foreach关键字有点不同,但是使用方法是一样的,除了更简洁外,其实foreach比传统的for更加优化,比如传统的for第二个限制位,一般访问属性或方法,比如说

      for (int x=0;x<obj.size();x++)  //这句的限制符号每次都会执行obj.size() 方法,当然Android开发网相信size()方法访问的是一个数组的length属性,活着是

      for (int y=0;y<obj.length;y++) //这里同样每次循环都执行obj.length对于Java VM的开销主要由这个obj的长度决定的,而Android SDK文档的推荐方式是

      int nSize=obj.size() 或 int nSize=obj.length

      for (int z=0;z<nSize;z++) ,但是这还不是最优的方法,下面Android123给大家更好的foreach方式的替代方法:

      for (SmartObject singleObj : SmartObjectArray)
      {
            singleObj.setName("cwj"); 或 singleObject.strName="cwj";
      }

       有关Android开发中的Java设计模式技巧,希望国内Android开发者打好Java基础,别扎堆实现铺天盖地的应用,目前不说恶意软件问题,就大部分的软件设计质量令人担忧,还有很多应用基本上就是J2EE或J2SE开源项目的移植版,更多的问题Android123今后详细讲解。

  • 相关阅读:
    第4月第1天 makefile automake
    第3月30天 UIImage imageWithContentsOfFile卡顿 Can't add self as subview MPMoviePlayerControlle rcrash
    第3月第27天 uitableviewcell复用
    learning uboot fstype command
    learning uboot part command
    linux command dialog
    linux command curl and sha256sum implement download verification package
    learning shell script prompt to run with superuser privileges (4)
    learning shell get script absolute path (3)
    learning shell args handing key=value example (2)
  • 原文地址:https://www.cnblogs.com/csj007523/p/2052070.html
Copyright © 2011-2022 走看看