摘要:
Android学习 ContentProvider数据更新与Observer模式一 Observer模式意图: 定义对象之间一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被更新。 依赖(Dependents)、发布-订阅(Publish-Subscribe)。处理一对多情况下对象之间的依赖关系。对象之间必然会存在依赖关系或者依赖关系会处于变动之中,如何解决依赖关系使他们之间的耦合性达到最小。适用性: l 当一个抽象模型有两个方面,其中一个方面依赖于另一个方面。将二者封装在独立的对象以使他们各自独立的改变和复用; l 当一个对象的改变需要同时改变... 阅读全文
摘要:
Android学习CursorWrapper与Decorator模式一 Decorator模式意图: 动态的给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。 动态的给一个对象,而不是对整个类添加额外职责,说明此模式将采用的结构是组合而不是继承;要给一个对象添加职责,通常可以使用其类的派生类对象替换当前对象,但这显得不够灵活,继承结构属于静态形式,系统往往并不知道有这样的类存在; 而我们需要的在某些时刻让对象具有一些额外的职责,额外的职责很可能是来自我们自己的扩展或者某些时刻的特定需求等。于是通过一种方式对现有的对象进行动态的包装(Wr... 阅读全文
摘要:
Android学习按键事件监听与Command模式一 Command模式意图: 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化; 对请求排队或记录请求日志,以及支持可撤销的操作。 将请求被封装成一个对象,当向某对象提交请求时,使我们可以不用去知道被具体的请求的操作或者请求的接收者, 实现了动作的请求者对象和动作的执行者对象之间的解耦合。适用性:使用Command模式代替callback形式的回调应用;在不同的时刻指定、排列和执行请求,动态的更改请求;支持取消操作;支持修改日志,保存请求执行过程以便恢复操作;Command模式支持一组事务的调用操作。且易于增... 阅读全文
摘要:
Android学习——ActivityManager与Proxy模式的运用一 Proxy模式意图: 为其他对象提供一种代理以控制这个对象的访问。适用性: l 远程代理( Remote Proxy ): 为一个对象在不同的地址空间提供局部代表。 l 虚代理(Virtual Proxy)根据需要创建开销很大的对象。使用一个代理对象作为代表,在真正的需要时进行创建。 l 保护代理(Protection Proxy):控制对原始对象的访问。保护代理用于对象应该有不同的访问权限的时候。 l 智能指引(Smart Reference): 取代了简单的指针,它在访问对象时执行一些附加操作。对指向... 阅读全文
摘要:
看到Android代码中有很多的@hide不明其用意何在,发现了这篇文章不错,分享之! Java反射机制是Java语言被视为准动态语言的关键性质。Java反射机制的核心就是允许在运行时通过JavaReflectionAPIs来取得已知名字的class类的相关信息,动态地生成此类,并调用其方法或修改其域(甚至是本身声明为private的域或方法)。也许你使用Java已经很长时间了,可是几乎不会用到Java反射机制。你会嗤之以鼻地告诉我,Java反射机制没啥用。或许在J2EE、J2SE等平台,Java反射机制没啥用(具体我也不了解,不多做评论),但是在Android应用开发中,该机制会带给你... 阅读全文
摘要:
Android中Adapter和Bridge模式理解和应用一 Adapter模式意图: 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能在一起工作的那些类可以在一起工作。适用性:使用一个已存在的类,而它的接口不符合你的要求;你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配他们的接口,而是使用对象适配器适配他们的父类接口;你想创建一个可以复用的类,该类可以与其他不相关的类或者不可预见的类(接口可能不一定兼容的类)协同工作;看看其结构图: 这是一个对象适配器结构图; 其实类似这样的类结构图(一个类包含了另一个类的实例并使用... 阅读全文
摘要:
一 Composite模式将对象组合成树形结构以表示“部分——整体”的层次结构。Composite使得用户对单个对象操作和组合对象的操作使用具有一致性。 这里面涉及到单个对象和组合对象的操作问题。 将单个对象和组合对象一致的对待能使:客户代码一致简单,使用更加灵活多变,便于扩展新的组合对象,便于对象的管理等。 统一对待单个对象和组合对象,势必要提供一些组合对象需要而单个对象不需要的操作或者属性等管理手段,这些手段对与单个对象或许根本不存在或者不适用,这样势必存在着一定风险隐患,造成不安全因素的存在。 但是单个对象和组合对象必然存在一些不同的地方,要将单个对象与组合对象一... 阅读全文
摘要:
Android中JNI的使用方法 首先看一下Android平台的框架图:(网上盗用) 可以看到Android上层的Application和ApplicationFramework都是使用Java编写,底层包括系统和使用众多的LIiraries都是C/C++编写的。 所以上层Java要调用底层的C/C++函数库必须通过Java的JNI来实现。下面将学习Android是如何通过Jni来实现Java对C/C++函数的调用。以HelloWorld程序为例:第一步:使用Java编写HelloWorld 的Android应用程序:package com.lucyfyr;import andro... 阅读全文
摘要:
Linux下 JNI的使用 学习Android其中涉及对JNI的使用,对于这种跨语言的调用真没有见过,Java也都是最近才学的更别说对JNI的了解了,JNI的使用对于Android来说又是十分的重要和关键。那么到底Java到底是如何调用C/C++的,通过网络达人的总结中学习,自己也顺便总结一下这个学习的过程。什么是JNI JNI是Java native interface的简写,可以译作Java原生接口。Java可以通过JNI调用C/C++的库,这对于那些对性能要求比较高的Java程序无疑是一个福音。JNI是Java与C/C++交互的接口。 使用JNI也是有代价。大家都知道JAVA程序是运行在 阅读全文
摘要:
一直困惑于: 如何设计写好一个类? 什么样的类算是设计比较的好?前面学习了软件首要技术革命——管理复杂度,以及设计上的一些原则。 对管理复杂度,我非常崇拜;比较笨同一时间东西太多我跟本关注不来,我非常讨厌复杂的事情,写程序我讨厌太长的函数太大的类太杂乱的逻辑。 学习原则显得非常的散乱和太具理论性不具操作性;而我工作中用的最多还是如何设计写好一个类和多个类之间交互性的问题。 在这个问题上:我时常感觉到只是一种随意性的想当然操作,写一个类仅仅是为了满足当下的需求和应用,通常也只是自己使用和维护;不用去考虑信息隐藏\封装\继承\扩展\耦合\内聚等。如果一个类不能满足要求时,要做的就是去修改... 阅读全文