08 2012 档案
摘要:单一职责原则就单一个类而言,应该仅有一个引起它变化的原因。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能削弱或者一致这个类完成其他职责的能力。 当发生变化时,设计会遭受到意想不到的破坏。软件设计真正要做的内容就是发现职责并把这些职责相互分离。如果能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责。开放封闭原则软件实体应该是可扩展的,但是不可以修改。对于扩展是开放的,对于更改是封闭的。栈的应用:中缀表达式:所有的运算符号都在两数字的中间。后缀表达式:所有的运算符号都在要运算的数字后面出现。中缀转后缀:栈用来进出运算的符号后缀计算表达式结果:栈用来进出运算
阅读全文
摘要:策略模式Strategy定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。策略模式是一种定义一些列算法的方法,所有这些算法完成的工作相同,但是实现不同,它可以用相同的方式调用所有的算法,减少各种算法类与使用算法类之间的耦合。Strategy类层次为Context定义了一系列的可重用的算法或者行为。继承有助于析取出这些算法中的公共功能。当不同的行为堆砌在一个类里面的时候,就很难避免用条件语句来选择合适的行为。将这些行为封装在独立的Strategy类中,可以使用这些行为的类中消除条件语句。策略模式可以用来封装几乎任何类型的规则。只要在分析过程中听到
阅读全文
摘要:Handler的定义: 主要接受子线程发送的数据,并用此数据配合主线程更新UI. 解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件,进行事件分发, 比如说, 你要是点击一个 Button ,Android会分发事件到Button上,来响应你的操作。 如果此时需要一个耗时的操作,例如: 联网读取数据,或者读取本地较大的一个文件的时候,你不能把这些操作放在主线程中,如果你放在主线程中的话,界面会出现假死现象, 如果5秒钟还没有完成的话,会收到Android系统的一个错误提示"强制关闭".这个时候我们需要把这些耗时
阅读全文
摘要:工厂方法模式Factory Method简单工厂模式SimpleFactory抽象工厂模式AbstractFactory工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法模式使一个类的实例化延迟到子类。简单工厂模式最大的优点是包含了逻辑判断,根据客户端的选择条件实例化相关的类。(个人总结:有判断逻辑的存在,像switch或者if)工厂方法模式的实现,客户端需要决定实例化哪一个工厂来实现运算子类,选择判断的问题还是存在,工厂方法把简单工厂的内部逻辑判断转移到客户端里面进行。需要增加功能的时候,不用修改工厂类,而是修改客户端代码。(个人总结:定义一系列接口,使创建对象的时候不
阅读全文
摘要:代理模式Proxy为其他对象提供一种代理以控制对这个对象的访问。代理模式就是访问对象的时候引入一定程度的间接性,因为这种间接性,可以附加多钟用途。远程代理:为一个对象再不同的地址空间提供局部代表,这样可以隐藏一个对象存在不同于地址空间的事实。虚拟代理,根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。安全代理,用来控制真实对象访问时的权限。智能指引,当调用真是对象的时候,代理处理另外的一些事情。package proxy.pattern; public interface Subject { public void Reqeust();
}
package proxy...
阅读全文
摘要:命令模式Command将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化;对请求排队或者记录请求日志以及支持可撤销的操作。package comment.pattern; public class CommandPattern { public static void main(String[] args) { Receiver receiver = new Receiver(); Command command = new ConcreteCommand(receiver); Invoker invoker = new Invoker(); invoker.se...
阅读全文
摘要:装饰模式Decorator动态地给一个对象增加额外的职责,就增加功能来说,装饰模式比生成子类更灵活。装饰模式视为已经有的功能动态地添加多更多的功能的一种方式。它把要装饰的功能单独封装在一个类里面,并让这个类封装它要装饰的对象,这样就可以为原有的对象增加新的功能,从而不会因为功能的扩展增加了竹类的复杂度。当需要执行特殊行为时,用户可以选择的使用装饰功能包含的对象。有效的把类的核心职责和装饰功能分开,除掉了类中重复的装饰修饰。package decorator.pattern; public class DecoratorPattern { /** * @param args */
...
阅读全文
摘要:备忘录模式Memento在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样可以将该对象恢复到原先保存的状态。Memento模式可以把复杂的对象内部信息对其他的对象屏蔽起来。把保存的细节封装在Memento中,要跟该保存的的细节不会影响客户端。Memento 模式比较适用于功能复杂的,但需要维护或记录属性历史的类,或者要保存属性只是众多属性的一小部分,Originator可以根据保存的Memento信息还原到前一状态。命令模式需要实现撤销功能,那么可以使用备忘录模式保存这些可撤销操作的状态。package memento.pattern; public class.
阅读全文
摘要:组合模式Composite将对象组合成熟形结构已表示整体和部分的层次结构,用户对单个对象和组合对象的使用具有一致性。需求中体现部分和整体的层次结构,并且希望用户可以忽略组合对象和单个对象的不同,统一使用组合结构的所有对象(具有一致性),就应该考虑组合模式。组合模式让用户可以一致的使用组合结构和单个对象,不用判断到底是在处理一个叶结点还是处理一个组合节点,也不用为定义组合而写一些选择判断语句。package composite.pattern; public class CompositePattern { /** * @param args */ public static v...
阅读全文
摘要:桥接模式Bridge Pattern组合关系(实心菱形):强的拥有关系,体现了严格的整体和部分的关系,部分和整体的生命周期相同。聚合关系(空心菱形):弱的拥有关系,A对象可以包含B对象,B对象不是A对象的一部分。桥接模式Bridge Pattern,将抽象部分和它的实现部分分离,使它们都可以独立的变化。实现系统多角度分类,让他们能够独立变化,降低了耦合度package bridge.pattern; public interface Implementor { public void Operation(); }
package bridge.pattern; public cla...
阅读全文
摘要:迭代器模式Iterator提供一种方法顺序访问一个聚合对象中的各个元素,又不暴露该对象的内部表示。当需要访问一个聚合对象,并且不管这些对象什么时候需要遍历,就应该考虑使用迭代器模式package iterator.pattern; public class IteratorPattern { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ConcreteAggregate aggreagate = new Concrete...
阅读全文
摘要:Java 里面实现Prototype使用Cloneable接口package prototype.pattern; import java.util.Date; /** * * @author Real H LI * */
public class Prototype implements Cloneable { private Date date; private String dateStr; private String ID; public Prototype(){ this.date=new Date(); this.dateStr=date.to...
阅读全文
摘要:适配器模式Adapter将一个类的接口转换成用户希望的另外一个接口。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用的环境要求不一样的情况。package adapter.pattern;
/** * * @author Real H LI * */
public class Existed { public void OldRequest(){ System.out.println("Existed Interface"); } }
package adapter.pattern;
/** * * @author Real H LI * */
pu...
阅读全文
摘要:Observer Pattern 观察者模式观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某个主题对象。主题对象发生状态变化时,会通知所有观察着,使它们能够更新自己。当一个对象发生改变时,要同时改变其他对象,就用观察着模式package observater.pattern; public class ObserverPattern { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ConcreteSu...
阅读全文
摘要:单例模式Singleton构造函数定义为private的作用是阻止类在外部被实例化。定义显式构造函数则默认的构造函数会失效。保证一个类仅有一个实例,并提供一个访问它的全局访问点。(定义一个静态方法)package singleton.pattern; public class Singleton { private static Singleton instance; /** * 私有化构造函数 */ private Singleton() { } /** * 单线程下的单例 * * @return */ public static Single...
阅读全文

浙公网安备 33010602011771号