<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[cai1213的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/cai1213</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; cai1213]]></copyright><item><title><![CDATA[JAVA设计模式——策略模式]]></title><link>https://blog.youkuaiyun.com/cai1213/article/details/8019468</link><guid>https://blog.youkuaiyun.com/cai1213/article/details/8019468</guid><author>cai1213</author><pubDate>Wed, 26 Sep 2012 09:36:21 +0800</pubDate><description><![CDATA[策略模式
定义了算法族，分别封装起来，让它们之间可以相互替换，此模式让算法的变化独立于使用算法的客户。
        应用场景
1）多个类只区别在表现行为不同，可以使用Strategy模式，在运行时动态选择具体要执行的行为。（如FlyBehavior和QuackBehavior）
2）需要在不同班过情况下使用不同的策略（算法），或者策略还可能在未来用其它方式来实现。（如FlyBehavi]]></description><category></category></item><item><title><![CDATA[JAVA中的final关键字]]></title><link>https://blog.youkuaiyun.com/cai1213/article/details/8010725</link><guid>https://blog.youkuaiyun.com/cai1213/article/details/8010725</guid><author>cai1213</author><pubDate>Sun, 23 Sep 2012 21:02:35 +0800</pubDate><description><![CDATA[一、final 数据


         向编译器告知一块数据是恒定不变的。如：
1）永不改变的编译时常量；
2）在运行时被初始化的值，而你不希望它被改变。
一个既是static又是final的域只占据一段不能改变的存储空间，一般用大写表示，并使用下划线分隔各个单词。


        数据类型：
1）基本数据类型（int，float，char，double，boolean]]></description><category></category></item><item><title><![CDATA[JAVA设计模式——装饰者模式]]></title><link>https://blog.youkuaiyun.com/cai1213/article/details/8003445</link><guid>https://blog.youkuaiyun.com/cai1213/article/details/8003445</guid><author>cai1213</author><pubDate>Fri, 21 Sep 2012 11:51:13 +0800</pubDate><description><![CDATA[装饰者模式
动态地将责任附加到对象上。若要扩展功能，装饰者提供了比继承更有弹性的替代方案。
具体被装饰者和抽象装饰类都继承于抽象被装饰者类，继承的是类型，而不是行为。行为来自装饰者和基础组件，或与其他装饰者之间的组合关系。
装饰者通常是用其他类似于工厂或生成器这样的模式创建的。
    
       具体例子
抽象被继承者类：Beverage.java
package com.de]]></description><category></category></item><item><title><![CDATA[JAVA设计模式——外观模式]]></title><link>https://blog.youkuaiyun.com/cai1213/article/details/8001228</link><guid>https://blog.youkuaiyun.com/cai1213/article/details/8001228</guid><author>cai1213</author><pubDate>Thu, 20 Sep 2012 17:54:52 +0800</pubDate><description><![CDATA[外观模式
提供了一个统一的接口，用来访问子系统中的一群接口。外观定义了一个高层接口，让子系统更容易使用。
设计原则：“最少知识”原则（Least Knowledge）——就任何对象而言，在该对象的方法内，我们只应该调用属于以下范围的方法：
1）该对象本身；
2）被当做方法的参数而传递进来的对象；
3）此方法所创建或实例化的任何对象；
4）对象的任何组件。]]></description><category></category></item><item><title><![CDATA[JAVA设计模式——适配器模式]]></title><link>https://blog.youkuaiyun.com/cai1213/article/details/8000846</link><guid>https://blog.youkuaiyun.com/cai1213/article/details/8000846</guid><author>cai1213</author><pubDate>Thu, 20 Sep 2012 17:09:58 +0800</pubDate><description><![CDATA[适配器模式
将一个类的接口，转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。
有“两种”适配器：“对象”适配器和“类”适配器。
1）对象适配器：使用对象组合，以修改的接口包装被适配者，被适配者的任何子类都可以搭配着适配器使用。
2）类适配器：使用继承，不需要重新实现整个被适配者。但是需要多重继承才能实现它，这在JAVA中是不可能的。]]></description><category></category></item><item><title><![CDATA[JAVA设计模式——模板方法模式]]></title><link>https://blog.youkuaiyun.com/cai1213/article/details/7998784</link><guid>https://blog.youkuaiyun.com/cai1213/article/details/7998784</guid><author>cai1213</author><pubDate>Thu, 20 Sep 2012 09:32:51 +0800</pubDate><description><![CDATA[模板方法模式
在一个方法中定义一个算法的骨架，而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下，重新定义算法中的某些步骤。
这个模式用来创建一个算法的模板。模板就是一个方法。更具体地说，这个方法将算法定义成一组步骤，其中的任何步骤都可以是抽象的，由子类负责实现。这可以确保算法的结构保持不变，同时由子类提供部分实现。
        具体例子
抽象类：AbstractC]]></description><category></category></item><item><title><![CDATA[JAVA设计模式——命令模式]]></title><link>https://blog.youkuaiyun.com/cai1213/article/details/7995883</link><guid>https://blog.youkuaiyun.com/cai1213/article/details/7995883</guid><author>cai1213</author><pubDate>Wed, 19 Sep 2012 15:09:12 +0800</pubDate><description><![CDATA[命令模式
将“请求”封装成对象，以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。
我们知道一个命令各对象通过在特定接收者上绑定一组动作来封装一个请求。要达到这一点，命令对象将动作和接收者包进对象中。这个对象只暴露出一个execute()方法，当此方法被调用时，接收者就会进行这些动作。从外面来看，其他对象不知道究竟哪个接收者进行了哪些动作，只知道如果调用execut]]></description><category></category></item><item><title><![CDATA[JAVA设计模式——组合模式+迭代器模式]]></title><link>https://blog.youkuaiyun.com/cai1213/article/details/7991482</link><guid>https://blog.youkuaiyun.com/cai1213/article/details/7991482</guid><author>cai1213</author><pubDate>Tue, 18 Sep 2012 17:58:45 +0800</pubDate><description><![CDATA[组合模式
允许你将对象组合成树形结构来表现“整体/部分”层析结构。组合能让客户以一致的方式处理个别对象以及对象组合。
我们以菜单为例思考这一切：这个模式能够创建一个树形结构，在同一个结构中处理嵌套菜单和菜单项组。通过将菜单和项放在相同的结构中，我们创建了一个“整体/部分”层次结构，即由菜单和菜单项组成的对象树。但是可以将它视为一个整体，像是一个丰富的大菜单。一旦有了丰富的大菜单，我们就可以使用]]></description><category></category></item><item><title><![CDATA[JAVA设计模式——迭代器模式]]></title><link>https://blog.youkuaiyun.com/cai1213/article/details/7990391</link><guid>https://blog.youkuaiyun.com/cai1213/article/details/7990391</guid><author>cai1213</author><pubDate>Tue, 18 Sep 2012 11:44:01 +0800</pubDate><description><![CDATA[迭代器模式
提供一种方法顺序访问一个聚合对象中的各个元素，而又不暴露其内部的表示。
迭代器模式把在元素之间游走的责任交给了迭代器，而不是聚合对象。这不仅让聚合的接口和实现变得更简洁，也可以让聚合更专注在它所应该专注的事情上面（也就是管理对象集合），而不必去理会遍历的事情。
        下面是具体例子：
菜单项的类：MenuItem.java

package com.designp]]></description><category></category></item><item><title><![CDATA[JAVA设计模式——观察者模式（JAVA内置的观察者模式）]]></title><link>https://blog.youkuaiyun.com/cai1213/article/details/7986941</link><guid>https://blog.youkuaiyun.com/cai1213/article/details/7986941</guid><author>cai1213</author><pubDate>Mon, 17 Sep 2012 11:45:02 +0800</pubDate><description><![CDATA[观察者模式（Observer）就是将观察者和被观察的对象分离开。我这里着试着在mvc架构下（model-view-control）来说说观察者模式,业务数据由数据模型(model)表示,视图（view）可以作为数据模型观察者，控制器(control)是数据模型和视图对象的通信者。业务数据是被观察者，控制器(control)观察业务数据的变化，发现数据变化后，就显示在界面上。观察者模式有很多实现方式]]></description><category></category></item><item><title><![CDATA[JAVA设计模式——工厂模式]]></title><link>https://blog.youkuaiyun.com/cai1213/article/details/7986653</link><guid>https://blog.youkuaiyun.com/cai1213/article/details/7986653</guid><author>cai1213</author><pubDate>Mon, 17 Sep 2012 10:42:49 +0800</pubDate><description><![CDATA[一、工厂模式主要是为创建对象提供过渡接口，以便将创建对象的具体过程屏蔽隔离起来，达到提高灵活性的目的。
 


工厂模式在《Java与模式》中分为三类：
1）简单工厂模式（Simple Factory）：不利于产生系列产品；

2）工厂方法模式（Factory Method）：又称为多形性工厂；

3）抽象工厂模式（Abstract Factory）：又称为工具箱，产生产品族，但]]></description><category></category></item><item><title><![CDATA[java中抽象类与接口的区别]]></title><link>https://blog.youkuaiyun.com/cai1213/article/details/7986404</link><guid>https://blog.youkuaiyun.com/cai1213/article/details/7986404</guid><author>cai1213</author><pubDate>Mon, 17 Sep 2012 09:44:55 +0800</pubDate><description><![CDATA[在Java语言中， abstract class 和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在，才赋予了Java强大的 面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性，甚至可以相互替换，因此很多开发者在进 行抽象类定义时对于abstract class和interface的选择显得比较随意。其实，两者之间还]]></description><category></category></item><item><title><![CDATA[JAVA设计模式——单例（Singleton）模式  多种实现方法]]></title><link>https://blog.youkuaiyun.com/cai1213/article/details/7979528</link><guid>https://blog.youkuaiyun.com/cai1213/article/details/7979528</guid><author>cai1213</author><pubDate>Fri, 14 Sep 2012 16:12:49 +0800</pubDate><description><![CDATA[转载地址：http://blog.youkuaiyun.com/melin520/article/details/904855

一、单例（Singleton）模式
　　单例模式的要点有三个：一是某个类只能有一个实例，二是它必需自行创建这个实例，三是它必须向整个系统自行提供这个实例．
二、恶汉式单例类
饿汉式单例类是一个典型的单例类，下面是一个它的实现：

/*
 * 饿汉式单例类，不能被继承]]></description><category></category></item><item><title><![CDATA[Java关键字static、final使用小结]]></title><link>https://blog.youkuaiyun.com/cai1213/article/details/7979236</link><guid>https://blog.youkuaiyun.com/cai1213/article/details/7979236</guid><author>cai1213</author><pubDate>Fri, 14 Sep 2012 15:18:50 +0800</pubDate><description><![CDATA[转载地址：http://android.blog.51cto.com/268543/384614



static
 1. static变量

    按照是否静态的对类成员变量进行分类可分两种：一种是被static修饰的变量，叫静态变量或类变量；另一种是没有被static修饰的变量，叫实例变量。两者的区别是： 
　 对于静态变量在内存中只有一个拷贝（节省内存），JVM只为静态分]]></description><category></category></item><item><title><![CDATA[windows（xp）+cygwin+ns2（2.30）安装]]></title><link>https://blog.youkuaiyun.com/cai1213/article/details/7976021</link><guid>https://blog.youkuaiyun.com/cai1213/article/details/7976021</guid><author>cai1213</author><pubDate>Thu, 13 Sep 2012 18:45:26 +0800</pubDate><description><![CDATA[原本我装的是ns-2.29，想在里面添加GPSR协议，发现老是出问题，心一狠换个2.30试试看。
由于之前已经装好cygwin了，此处省略几千字。
下面是ns-2.30安装过程：
1）将D:\cygwin\home\Jason\ns-allinone-2.29删掉，将压缩包ns-allinone-2.30.tar.gz解压后的文件夹拷到D:\cygwin\home\Jason\中。
2）点]]></description><category></category></item><item><title><![CDATA[android与html5的交互——数据库操作，UI操作，以及html5的localStorage、定位功能]]></title><link>https://blog.youkuaiyun.com/cai1213/article/details/7956051</link><guid>https://blog.youkuaiyun.com/cai1213/article/details/7956051</guid><author>cai1213</author><pubDate>Fri, 07 Sep 2012 17:31:56 +0800</pubDate><description><![CDATA[android与html5之间可以相互交互，即android中的类可以调用javascript中的函数，javascript可以调用android中的类的方法。
这个例子中，html5完成数据库的操作，包括数据库的创建、表的创建、数据的增删查改等，还有html5的定位功能。
先看效果图：




布局文件：main.xml

<LinearLayout xmlns:android=]]></description><category></category></item><item><title><![CDATA[android与HTML5相结合实现的省市县三级联动]]></title><link>https://blog.youkuaiyun.com/cai1213/article/details/7951754</link><guid>https://blog.youkuaiyun.com/cai1213/article/details/7951754</guid><author>cai1213</author><pubDate>Thu, 06 Sep 2012 17:36:07 +0800</pubDate><description><![CDATA[在android开发中，用原生代码实现的省市县三级联动显得有些繁琐。前段时间，看到这样的应用：省市县三级联动的界面用HTML5实现，在android中布局webview加载html实现省市县的布局。
毕竟是加载html，显示布局以及选择省市县时会有点卡。先看看效果。




展开之后：




布局文件：main.xml


<LinearLayout xmlns:and]]></description><category></category></item><item><title><![CDATA[android开发——用GridView实现省市县三级联动]]></title><link>https://blog.youkuaiyun.com/cai1213/article/details/7951370</link><guid>https://blog.youkuaiyun.com/cai1213/article/details/7951370</guid><author>cai1213</author><pubDate>Thu, 06 Sep 2012 17:03:14 +0800</pubDate><description><![CDATA[前段时间写了一个DEMO，里面用到省市县三级联动的功能，稍微整理了一下。以下代码中大部分数据来源于网上的下拉列表的省市县三级联动的例子，这里我作出了改动，用的是GridView来显示省市县，代码有点繁琐，但是显示效果还是不错的。



显示效果如下图所示：未点击按钮之前，gridview隐藏。



点击按钮后，会展开gridview，选择之后，gridview隐藏。]]></description><category></category></item><item><title><![CDATA[JavaScript与Android之间的交互]]></title><link>https://blog.youkuaiyun.com/cai1213/article/details/7942791</link><guid>https://blog.youkuaiyun.com/cai1213/article/details/7942791</guid><author>cai1213</author><pubDate>Tue, 04 Sep 2012 17:20:22 +0800</pubDate><description><![CDATA[javascript直接调用Android中的方法，例子：webview直接加载html，html中的javascript调用android端的方法。此例子可以有助于android开发者开发图表类的项目，图表不需要原生代码，只需用脚本实现。图表的脚本生成可以参考：http://www.ichartjs.cn
Android端：
RIAExample.class
package com.exa]]></description><category></category></item></channel></rss>