摘要: 有几天没有写博客了,最近几天比较忙,今天总结一下。 我们公司有一个产品叫微会议,它里面调用了新浪微博的接口。 先说一下新浪开放平台吧,新浪对于微博,暴露出了一些rest风格的接口,然后提供了一个api,当然也是基于rest风格的,而且提供了很多语言的实现,其中就包括java的实现,并提供相应的sdk供开发者下载使用。如果一个应用想要使用微博接口,需要先在开放平台上申请开发者的资格,然后创建一个应用,并需要填写一些基本的信息,这些东西经过新浪的审核后,开发者才可以使用微博的接口。 而以前新浪提供的微博登录方式有两种,一种是Xauth,一种是oauth,其中xauth可以直接在应用内登录... 阅读全文
posted @ 2012-11-07 10:46 寒剑飘香 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 迭代器模式,提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露对象的内部表示。迭代器抽象类: 1 package iterrator; 2 3 public abstract class Iterator { 4 public abstract Object first(); 5 6 public abstract Object next(); 7 8 public abstract boolean isDone(); 9 10 public abstract Object currentItem();11 }聚合对象抽象类:1 public ab... 阅读全文
posted @ 2012-11-01 15:16 寒剑飘香 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 组合模式,将对象组合成树形结构以表示‘部分-整体’的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。 component为组合中的对象声明接口,在适当情况下,实现所有类共有接口的默认方法。声明一个接口用于访问和管理Component的子部件。 1 package group; 2 3 public abstract class Component { 4 protected String name; 5 6 public Component(String name) { 7 this.name = name; 8 } 9... 阅读全文
posted @ 2012-11-01 11:40 寒剑飘香 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 备忘录这个名词,相信我们已经很熟悉了,比如word里面有撤销操作的功能,打游戏时我们可以保存进度等等,在软件设计中,也会用到备忘录。 备忘录,在不破坏封装性的前提下,捕获一个对象的内部状态,并在改对象之外保存这个状态,这样以后就可以将该对象恢复到原先的状态。 我们来看代码,首先是原始的类,里面有一个状态属性state,并且可以决定创建备忘录和恢复备忘录: 1 package beiwanglu; 2 3 public class Originator { 4 private String state; 5 6 public Memento createMem... 阅读全文
posted @ 2012-10-31 12:08 寒剑飘香 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 适配器模式,将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一同工作。 在软件开发中,系统的数据和行为都正确,但是接口不符时,我们应该考虑使用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配,适配器主要用于希望复用一些现有的类,但是接口又与复用环境要求不一致的情况。 我们看代码: 首先是target类,也就是客户需要的类,里面有一个方法是request() 1 package adapter;2 3 public class Target {4 public void request(){5 ... 阅读全文
posted @ 2012-10-31 11:39 寒剑飘香 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 状态模式,当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 状态模式解决的是当控制一个对象状态转换的条件表达式过于复杂时,把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的问题简单化。 状态类: 1 package state; 2 3 public interface IState { 4 void call(Context context); 5 //其他操作 6 } 7 8 public class WaitState implements IState{ 9 10 @Override11 p... 阅读全文
posted @ 2012-10-30 15:30 寒剑飘香 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 我们设想这样一个场景,我们在最初做项目的时候数据库访问层使用的是mysql,但是突然有一天临时决定要使用access,于是,由于二者在很多方面的不同,我们需要修改实现类,而且不止一个方法需要修改。这样是不是很麻烦呢?加入以后又要使用别的数据库呢?所以我们引入了抽象工厂模式。 抽象工厂模式,提供一个创建一系列相关或者相互依赖对象的接口,而无需指定他们具体的类。 AbstractProductA和AbstractProductB是两个抽象产品,之所以是抽象的,是因为他们可能有不同的实现。 阅读全文
posted @ 2012-10-30 11:50 寒剑飘香 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 在介绍中提到,Catalina中有两个主要的模块:连接器和容器。本章中你将会写一个可以创建更好的请求和响应对象的连接器,用来改进第2章中的程序。一个符合Servlet 2.3和2.4规范的连接器必须创建javax.servlet.http.HttpServletRequest和javax.servlet.http.HttpServletResponse,并传递给被调用的servlet的service方法。在第2章中,servlet容器只可以运行实现了javax.servlet.Servlet的servlet,并传递 javax.servlet.ServletRequest和javax.se.. 阅读全文
posted @ 2012-10-29 16:31 寒剑飘香 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 让我们从一个servlet容器的角度来研究一下servlet编程。总的来说,一个全功能的servlet容器会为servlet的每个HTTP请求做下面一些工作: 当第一次调用servlet的时候,加载该servlet类并调用servlet的init方法(仅仅一次)。 对每次请求,构造一个javax.servlet.ServletRequest实例和一个javax.servlet.ServletResponse实例。 调用servlet的service方法,同时传递ServletRequest和ServletResponse对象。 当servlet类被关闭的时候,调用servlet的d.. 阅读全文
posted @ 2012-10-29 16:19 寒剑飘香 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 观察者模式,又叫发布-订阅模式。 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时,会通知所有的观察者对象,使他们能够自动更新自己。 我们来看具体的代码实现,首先是抽象的通知者以及他的实现类: 1 package observer; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 public abstract class Subject { 7 private List<Observer> observers = new ArrayL... 阅读全文
posted @ 2012-10-29 12:02 寒剑飘香 阅读(249) 评论(0) 推荐(0) 编辑