05 2012 档案
摘要: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程序是运行在
阅读全文
摘要:一直困惑于: 如何设计写好一个类? 什么样的类算是设计比较的好?前面学习了软件首要技术革命——管理复杂度,以及设计上的一些原则。 对管理复杂度,我非常崇拜;比较笨同一时间东西太多我跟本关注不来,我非常讨厌复杂的事情,写程序我讨厌太长的函数太大的类太杂乱的逻辑。 学习原则显得非常的散乱和太具理论性不具操作性;而我工作中用的最多还是如何设计写好一个类和多个类之间交互性的问题。 在这个问题上:我时常感觉到只是一种随意性的想当然操作,写一个类仅仅是为了满足当下的需求和应用,通常也只是自己使用和维护;不用去考虑信息隐藏\封装\继承\扩展\耦合\内聚等。如果一个类不能满足要求时,要做的就是去修改...
阅读全文
摘要:实现一个系统时,需要将其分为不同的层次上进行设计;各层次如下: 1 软件系统 确定系统的框架结构;2 分解为子系统或包 将系统合理的分解为解不同的子系统,确定不同子系统之间的通信规则;常用的子系统: 业务规则:依赖于具体的业务; 用户界面:处理用户界面交互,窗口管理等; 数据库访问:隐藏数据实现细节,提供抽象的数据访问接口; 对系统的依赖性:对特定的系统依赖性进行封装; 这两个给人的感觉就太不一样!3 分解子系统中的类 子系统由多个类构成,对问题进行抽象,设计不同的类完成相应的功能; 基于接口的编程,类之间的通信方式;4 分解成子程序 确定类的细节...
阅读全文
摘要:邀请 The Invitation 文/加拿大女诗人 Oriah我不在乎你如何谋生,只想知道你有何渴望,是否敢追逐心中梦想。我不关心你年方几何,只想知道面对爱情和梦想,你是否会无所保留,像个傻瓜般投入得透彻。生命的背叛,在你心口上划开缺口,热情逐日消减,恐惧笼罩心田,我想知道,你能否和伤痛共处,用不着掩饰,或刻意忘却,更别把它封堵。我想知道,你能否和快乐共舞,翩翩起舞,无拘无束,从嘴唇,到指尖,到脚趾头都把热情倾注。这一刻,忘记谨小慎微,现实残酷,忘记生命的束缚。我想知道,你能否从没天平淡的点滴中发现美丽,能否葱生命迹象中寻找到自己生命的意义。我想知道,你能否坦然面对失败,———...
阅读全文
摘要:软件的首要技术使命便是管理复杂度。为何如此呢?复杂性: 都有过这样的经验:同时让你忙的太多东西,你肯定会丢三落四!虽然你忙的焦头烂额的,但结果却是不尽人意。 或者一件事情,但是其中包含的太多东西你总想一次性做好,这里也做那里也做,结果呢乱七八糟,重头再来…… 人的大脑处理能力有限,无法同时关注太多东西,关注东西太多将会导致某些遗漏和混乱;就像是玩杂耍:抛在空中的球两个是比较容易控制,增加复杂度两个以上球难度会增大很多很多;在代码设计过程中,如果关注的太多,将会越复杂,越复杂手忙脑乱势必会造成遗漏导致错误发生。需要同时关注的事情或者逻辑太多是不可取的,但是该软件中存在诸多逻辑和复杂的事...
阅读全文
摘要:最近正好有些时间,Android也学了一个多月,发现要学习的东西非常的多。由于工作上不确定依然没有明确的方向;于是决定停下来看看书——代码大全。并记录下学习的过程。 软件开发的核心是软件构建;构建活动主要包括:详细设计,编码,调试;详细设计,编码,调试对于软件开发过程中是必不可少的,这个感觉只是将需求转化为实质性的编码工作,或者将思想用代码表达出来;说这种“构建活动”是核心,感觉有些牵强和不能理解;难道是翻译的不正确…需求分析和架构框架设计就不重要吗。 虽变化万端,而理为一贯。软件开发构建过程是建立模型的过程,这种模型都能够在生活中找到模型与之对应;借助生活中的实例模型帮助理解软件开发...
阅读全文