Android 源码设计模式解析与实战 - (EPUB全文下载)

文件大小:1.14 mb。
文件格式:epub 格式。
书籍内容:

Android 源码设计模式解析与实战
第1章 走向灵活软件之路——面向对象的六大原则
第2章 应用最广的模式——单例模式
第3章 自由扩展你的项目——Builder模式
第4章 使程序运行更高效——原型模式
第5章 应用最广泛的模式——工厂方法模式
第6章 创建型设计模式——抽象工厂模式
第7章 时势造英雄——策略模式
第8章 随遇而安——状态模式
第9章 使编程更有灵活性——责任链模式
第10章 化繁为简的翻译机——解释器模式
第11章 让程序畅通执行——命令模式
第12章 解决、解耦的钥匙——观察者模式
第13章 编程中的“后悔药”——备忘录模式
第14章 解决问题的“第三者”——迭代器模式
第15章 抓住问题核心——模板方法模式
第16章 访问者模式
第17章 “和事佬”——中介者模式
第18章 编程好帮手——代理模式
第19章 物以类聚——组合模式
第20章 得心应手的“粘合剂”——适配器模式
第21章 装饰模式
第22章 对象共享,避免创建多对象——享元模式
第23章 统一编程接口——外观模式
第24章 连接两地的交通枢钮——桥接模式
第25章 MVC的介绍与实战
第26章 MVP应用架构模式
看完了
第1章 走向灵活软件之路——面向对象的六大原则
1.1 优化代码的第一步——单一职责原则
单一职责原则的英文名称是Single Responsibility Principle,缩写是SRP。SRP的定义是:就一个类而言,应该仅有一个引起它变化的原因。简单来说,一个类中应该是一组相关性很高的函数、数据的封装。就像老师在《设计模式之禅》中说的:“这是一个备受争议却又及其重要的原则。只要你想和别人争执、怄气或者是吵架,这个原则是屡试不爽的”。因为单一职责的划分界限并不是总是那么清晰,很多时候都是需要靠个人经验来界定。当然,最大的问题就是对职责的定义,什么是类的职责,以及怎么划分类的职责。
对于计算机技术,通常只单纯地学习理论知识并不能很好地领会其深意,只有自己动手实践,并在实际运用中发现问题、解决问题、思考问题,才能够将知识吸收到自己的脑海中。下面以我的朋友小民的事情说起。
自从Android系统发布以来,小民就是Android的铁杆粉丝,于是在大学期间一直保持着对Android的关注,并且利用课余时间做些小项目,锻炼自己的实战能力。毕业后,小民如愿地加入了心仪的公司,并且投入到了他热爱的Android应用开发行业中。将爱好、生活、事业融为一体,小民的第一份工作也算是顺风顺水,一切尽在掌握中。
在经历过一周的适应期以及熟悉公司的产品、开发规范之后,小民的开发工作就正式开始了。小民的主管是个工作经验丰富的技术专家,对于小民的工作并不是很满意,尤其小民最薄弱的面向对象设计,而Android开发又是使用Java语言,程序中的抽象、接口、六大原则、23种设计模式等名词把小民弄得晕头转向。小民自己也察觉到了自己的问题所在,于是,小民的主管决定先让小民做一个小项目来锻炼这方面的能力。正所谓养兵千日用兵一时,磨刀不误砍柴工,小民的开发之路才刚刚开始。
在经过一番思考之后,主管挑选了使用范围广、难度也适中的图片加载器(ImageLoader)作为小民的训练项目。既然要训练小民的面向对象设计,那么就必须考虑到可扩展性、灵活性,而检测这一切是否符合需求的最好途径就是开源。用户不断地提出需求、反馈问题,小民的项目需要不断升级以满足用户需求,并且要保证系统的稳定性、灵活性。在主管跟小民说了这一特殊任务之后,小民第一次感到了压力,“生活不容易!”年仅22岁的小民发出了如此深刻的感叹!
挑战总是要面对的,何况是从来不服输的小民。主管的要求很简单,要小民实现图片加载,并且要将图片缓存起来。在分析了需求之后,小民一下就放心下来了,“这么简单,原来我还以为很难呢……”小民胸有成足地喃喃自语。在经历了10分钟的编码之后,小民写下了如下代码:
/**
* 图片加载类
*/
public class ImageLoader {
  // 图片缓存
  LruCache mImageCache;
  // 线程池,线程数量为CPU的数量
ExecutorService mExecutorService = Executors.newFixedThreadPool (Runtime.   getRuntime().availableProcessors());

  public ImageLoader() {
   initImageCache();
  }

  private void initImageCache() {
    // 计算可使用的最大内存
    final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
    // 取四分之一的可用内存作为缓存
    final int cacheSize = maxMemory / 4;
    mImageCache = new LruCache(cacheSize) {

      @Override
      protected int sizeOf(String key, Bitmap bitmap) {
        return bitmap.getRowBytes() * bitmap.getHeight() / 1024;
      }
    };
  }

  public void displayImage(final String url, final ImageView imageView) {
     imageView.setTag(url);
     mExecutorService.submit(new Runnable() {

    @Overri ............

以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。

版权声明:书云(openelib.org)是世界上最大的在线非盈利图书馆之一,致力于让每个人都能便捷地了解我们的文明。我们尊重著作者的知识产权,如您认为书云侵犯了您的合法权益,请参考版权保护声明,通过邮件openelib@outlook.com联系我们,我们将及时处理您的合理请求。 数研咨询 流芳阁 研报之家 AI应用导航 研报之家
书云 Open E-Library » Android 源码设计模式解析与实战 - (EPUB全文下载)