摘要:
对于类而言,为了让客户端获取它自身的一个实例,最常用的方法就是提供一个公有的构造器。类也可以提供一个公有的静态工厂方法,它只是一个返回类的实例的静态方法。下面是一个来自Boolean的简单示例。[java] view plaincopypublicstaticBooleanvalueOf(booleanb){returnb?Boolean.TRUE:Boolean.False;}静态工厂方法与构造器不同的第一大优势在于,它们有名称。静态工厂方法与构造器不同的第二大优势在于,不必在每次调用它们的时候都创建一个新对象。静态工厂方法与构造器不同的第三大优势在于,它们可以返回原返回类型的任何子类型的对 阅读全文
摘要:
*观察者模式:定义了对象之间的一对多依赖关系,当一个对象(主题对象)的状态改变时,它的所有依赖者(观察者对象)都会收到通知并自动更新。*观察者模式实现了主题对象与观察者对象之间的松耦合,当有新的观察者时,无需修改主题对象的代码,只需要新的观察者对象实现接口。在程序运行的过程中,可以随时注册和删除观察者而不影响主体对象。*观察者模式使主题(Subject)对象和观察者(Observer)对象都可以被轻易地复用。软件设计原则:努力在交互对象之间实现松耦合,使它们之间的互相依赖降到最低,从而提高可复用性。*Java内置了对观察者模式的支持:java.util.Observable类和java.uti 阅读全文
摘要:
Berkeley db(独立介绍)本文由浅入深,详细介绍了 Heritrix 在 Eclipse 中的配置、运行。最后对其进行扩展,介绍如何实现只抓取特定网站的页面。通过本文,读者可以了解 Heritrix 的相关特点以及在 Eclipse 中的配置运行,能够从零开始构建特定站点的专有爬虫,从而为网站增加全文检索服务。背景随着网站内容的增加,为其添加搜索功能是一个常见的需求,搜索引擎也已成为互联网最重要的应用之一。你是否觉得普通的数据库检索已经不能满足你的查询需求了呢?是否希望花最小的代价为你的网站建立一个像 Google、百度那样的全文搜索引擎?是否希望创建自己专有的搜索引擎而不是想尽办法 阅读全文
摘要:
转自:http://blog.csdn.net/dongfengsun/article/details/4870650前言:iPhone是个极具艺术性的平台,相信大家在开发过程中一定有很多感触,希望能写出来一起交流,所以开了这个帖子,以后还会维护。如果大家和我一样有感触的话,可以跟在帖子下面,最好简短并附上中英文:)1:如果无法保证子类行为的一致性,那么就用委托If the subClass cann't keep with superClass,use delegate rather than inheritance.2:屏幕上看到的,都是UIVewEverything you se 阅读全文
摘要:
面向对象(OO)的四个基本概念是:抽象、封装、继承、多态。软件设计原则:封装变化--把软件中那些在将来可能产生变化的地方独立出来,与其他部分分割以减少变化时对它们的影响。这样的设计可以使系统变得有弹性,更好地应对变化。软件设计原则:针对接口编程,而不针对实现编程。依据该原则,声明一个变量时要把它声明为超类型(接口或抽象类),而不是实现类。*继承的好处是实现了代码的复用。*软件开发人员花费在软件开发完成之“后”的时间要远多于完成之“前”,所以应致力于提高可维护性和可扩展性上的复用程度。软件设计原则:多用组合,少用继承。使用组合的方式可以实现代码的分割,使代码有更大的弹性,更好地提高了复用性。策略 阅读全文
摘要:
有的时候,我们做的程序需要提供一些选项的功能,能让用户去定制化他们自己的使用风格。举个例子,你可能允许用户是否自动保存登录信息,允许用户自己设定某个页面的刷新时间等等。在Android平台上面,我们可以使用PreferenceActivity基类去显示给用户一个选项设置的界面。在Android3.0或更高的版本上,可以使用PreferenceFragment类去实现这个功能。下面将展示如何去创建和使用PreferenceFragment。1、创建一个工程:PreferenceFragmentExample。2、在res文件夹下面新建一个xml文件夹,在xml文件夹下面新建一个文件:prefer 阅读全文
摘要:
基于暗示功能的过滤一个暗示的功能是为了让应用程序正确运行所需的功能,但是,这个功能不在清单的<uses-feature>元素中声明。严格的说,应用程序应用始终声明它所使用和需要的所有功能,因此对于应用程序使用的,但却没有声明的功能,应该被认为是一个错误。但是,出于对用户和开发者的保护,Google Play会查看每个应用程序的暗示功能,并基于这些功能来过滤应用程序,就像是明确声明的功能所做的处理一样。应用程序可能需要一个功能,但却不声明,这是因为:1.应用程序是针对较旧的Android类库版本(Android1.5或更早)来编译的,并且<uses-feature>元素是 阅读全文
摘要:
Google Play会过滤出那些对用户可见的应用程序,因此用户只能看到和下载那些跟他们的设备兼容的应用程序。通过功能的兼容性是过滤应用程序的方法之一。Google Play通过把以下两项内容进行比较,来判断应用程序跟给定用户设备是否兼容:1.应用程序需要的功能---指应用程序在它自己的清单的<uses-feature>元素中声明的功能;2.在设备上有效的硬/软件功能---值设备用只读的系统属性所报告的它所支持的功能。为了确保功能的准确比较,Android包管理器提供了一个共享的功能常量集合,应用程序和设备都使用这些常量来声明各自所需要和支持的功能。可用的功能常量在本文下面的功能参 阅读全文
摘要:
分析Android Framework有什么好方法呢?回答这一问题之前,先回想一下我们是如何分析他人编写的代码的。在分析程序代码时,我们通常从程序的入口main()函数开始,一点一点地理清程序流程,把握程序的运行过程。同样,在分析结构庞大的Android Framework时,也要从Android平台启动过程入手。Android启动过程包含从Linux内核加载到Home应用程序启动的整个过程,依次分析这一过程,有利于我们系统地理解Android Framework运行的原理。下图简单地描述了Android的启动过程。1. Linux内核Android是基于Linux内核的系统平台。启动时,首先 阅读全文
摘要:
Google Play会根据应用程序所支持的纹理压缩格式来过滤应用程序,以确保应用程序只能安装在处理其纹理属性的的设备上。开发者能够使用基于GPU平台的纹理压缩格式,作为针对特定设备类型一种过滤方式。 阅读全文