`
文章列表
本文翻译于vogella.com。   在Android应用程序中使用Fragments 这篇教程描述了怎样在Android 应用程序中使用Fragment类来创建多窗格布局,也就是可以缩放到设备的可用宽度的应用程序。它基于Eclipse 4.3(Kepler),Java1.6和Android4.4。   1.Android基础 下面的描述假设了你已经掌握了基本的Android开发知识。 请查看Android开发教程来学习基础知识。也可以看Android开发教程来获取更多的关于Android开发的信息。 2.Fragments 2.1 什么是Fragments? frag ...
中间人设计模式是用于协作一组同事。这些同事相互之间不直接沟通,而是通过中介。 在下面的例子中,同事A想要说话,同事B想要打架。当他们做动作(例如doSomething)的时候,他们调用中间人去做那些动作或事情。 1、中间人类图 2、代码实例 package com.leon.mediator; interface IMediator { public void fight(); public void talk(); public void registerA(ColleagueA a); public void registerB(Colleagu ...
迭代器是用于遍历一个对象的集合。它是一个比较常用的模式,你之前或许就用过。当你看到像hasNext()和next()的东西时,它或许就是一个迭代器模式。例如,你可能遍历一个数据查找记录的列表。 1、迭代器模式类图  2、迭代器模式Java代码 interface IIterator{ public boolean hasNext(); public Object next(); } interface IContainer{ public IIterator createIterator(); } class RecordCollection imple ...
命令设计模式需要一个操作和附带的参数,并将它们封装在一个对象中来执行,记录等等。在下面的例子中,命令是一个操作,它的参数是一个Computer,而且它们封装在Switch。 从另一个角度看,命令模式有4个部分:命令,接收者,调用者和客户端。在这个例子中,Switch是调用者,Computer是接收者。一个具体的命令有哥接收器对象并调用接收器中的方法。调用者可以使用不同的具体的命令。客户端为接收器管理使用哪一条命令。 1、命令模式类图  2、Java命令模式的例子 package com.leon.command; import java.util.ArrayList; imp ...
责任链模式的主要思想是是建立一个链处理单元,每一个单元如果满足条件都会处理请求。由于是链构建,如果一个单元不满足条件,那么就测试下一个单元等。每一条请求都会沿着链处理。 1、类图  2、实例代码 package com.leon.chain; public abstract class Chain { public static int One = 1; public static int Two = 2; public static int Three = 3; protected int threshold; protected Chain next ...
访问者模式是在编译器的解析器常用的设计模式,例如,Eclipse JDT AST解析器。 基本上,在访问者模式中有两个接口——访问者和元素。 1、访问者的故事 假设有一个第一次来到纽约的游客。他想去游览这个城市而且这个城市也接收他游览。一旦游客开始游览,就会自动游览所有的事物,并且当他想去一个博物馆的时候他不必去调用任何方法。这个旅游是一个package! 2、访问者模式类图 3、访问者模式的步骤  下面的图显示游览的步骤  工作流程就像下面描述的: 1.一个访问者FirstTimeVisitor和一个元素City被创建。 2.程序开始于"City accept a ...
模板方法设计模式定义了达到特定操作的工作流程。它允许子类不改变工作流程的结构去修改某些步骤。 下面的例子展示了模板方法模式是怎样运作的。 1、类图 2、Java代码 Vehicle.java定义了一个vehicle和它怎么样运作。   package com.leon.templatemethod; public abstract class Vehicle { // 设置成protected,这样子类可以访问。 protected boolean status; abstract void start(); abstract void run(); ...
一个Java库和一个框架之间的区别是什么?这两种概念都非常重要但是有时候也令Java开发者感到困惑。   1、库和框架的主要不同点以及定义 库和框架之间主要的不同点是“控制反转”。当你调用一个库中的方法时,你在控制。但是用框架时,控制权反转了:框架在调用你的代码。  库仅仅是一个类定义的集合。背后的原因就是简单的代码复用,即得到那些其他开发者编写的代码。那些类和方法通常在一个域特定区域定义了特定的操作。例如,有一些数学运算的库,它可以让开发者仅仅调用下功能即可,不用重新做一个算法怎么工作的实现。 在框架中,所有的控制流都已经在了,并且有一堆预先定义的你应该用你的代码填充的白点。框架 ...
永远不要轻言放弃  原文地址:http://www.programcreek.com/2011/01/a-java-example-of-strategy-design-pattern/***********************************************碎碎念的分割线*************************************************   策略模式也称作政策模式。 这有个关于策略模式的故事。假设Mike在有时候开车会超速,但不总是这样。他可能会被警察拦截下。可能这个警官人品比较和善,可能不给mike开罚单或者简单的警告下就让他走 ...
状态模式主要是为了在运行的时候来回切换状态。 1、状态模式故事 人们生活在不同的财富状况下,他们有些富有,有些却贫穷。这两种状态——富有和贫穷,随着时间的推移可能会相互转化。人们在贫穷的时候通常都会努力工作,而富有的时候常常玩乐。他们干什么取决于他们生活在贫穷还是富有状态下。他们的行动作为又影响贫富状态的变化,要不然,人类社会就不公平了。 2、类图 下图就是它的类图,你可以比较下策略模式来更好的理解下他们的不同。  3、代码实例 状态类 interface State { public void saySomething(StateContext sc); } cl ...
简而言之,观察者模式就是发布者+订阅者。 观察者模式常常用在GUI的动作监听器上。 下面是一个典型的关于猎头的例子。在下图中有两个角色——猎头和求职者。求职者订阅了一个猎头,当猎头手里有新的工作机会的时候就通知求职者。 1、类图  2、实例代码 主体接口 public interface Subject { public void registerObserver(Observer o); public void removeObserver(Observer o); public void notifyAllObservers(); }  观察者接口 publi ...

Leon的201314

        时光你慢些走,慢慢走...           每当在这种节日性的时刻才意识到,时间过得好快。匆匆忙忙的过去了2013年的上半年,那可真是匆忙。 经常性的会工作到10-11点,到家都12点的节奏。不过累但比较充实,虽然这 ...
享元模式用来最大限度的减少内存使用。它所做的就是尽可能多的同其他类似对象共享数据。通常与工厂模式一起使用。 1、类图  2、JAVA代码实例   // 享元对象接口 interface ICoffee { public void serveCoffee(CoffeeContext context); }   // 具体的享元对象 class Coffee implements ICoffee { private final String flavor; public Coffee(String newFlavor) { this.flavor = new ...
装饰器模式可以动态地向一个已经存在的对象实例添加额外其他的功能。下面,用一个简单的小例子——打扮你的女友,来讲解装饰器模式。 1、装饰器小故事 假设你正在找一个妹子,这些妹子可能来自不同的国际,例如,America, China, Japan, France, 等等。她们也有不同的个性和习惯。在一个(像百合网)相亲的网站上,如果每一种类型的妹子都是各不相同的Java类的话,这可就有成千上万个类了。这是一个非常严重的问题叫做类爆炸(class explosion)。而且,当有新的妹子类型,新的类需要创建时,这种设计是不可扩展的。   我们改变下原来的设计,让每一种个性或者习惯变成一种装饰 ...
组合模式(Composite)相对比较简单;但是在关于设计的地方很多都用到了这种模式。例如,SWT,Eclipse  Workspace等等。组合模式一般用来生成一个可以通过同一方法来访问不同层级的树。 1、类图   下面的代码例子实现了如下树状数据结构。  2、代码实例 import java.util.List; import java.util.ArrayList; //Component interface Component { public void show(); } //Composite class Composite implem ...
Global site tag (gtag.js) - Google Analytics