- 博客(20)
- 资源 (42)
- 收藏
- 关注
原创 设计模式16——Memento设计模式
Memento备忘录设计模式是一个保存另外一个对象内部状态拷贝的对象,这样以后就可以将该对象恢复到以前保存的状态。Memento备忘录设计模式的结构如下:Memento备忘录设计模式有以下3个重要角色:Originator:需要保存内部状态的对象。Caretaker:为Originator保存并恢复状态的对象。Memento:存放Originator内部状态的对象,由O
2012-04-25 19:03:25 2281
原创 设计模式15——Template Method设计模式
Template Method模板方法设计模式定义一个操作中算法的骨架,将具体步骤的执行延迟到子类中实现。Java中的抽象类就是使用了模板方法设计模式。模板方法设计模式结构如下:以文档处理为例,Template Method设计模式简单例子如下:abstract class DocumentUtil{ public void openDocument(String name)
2012-04-25 16:26:14 1406
原创 设计模式14——Flyweight设计模式
Flyweight享元设计模式是为了避免大量拥有相同内容的小类重复创建,而使大家共享一个类的模式。Flyweight享元设计模式实质是运用一个简单工厂方法模式,外加一个单类模式实现细粒度原件的共享。享元模式结构如下:Flyweight享元设计模式有两个重要概念:以文字处理软件中对象为例内部状态intrinsic:可以共享的对象,如相同的字。外部状态extrinsic:不
2012-04-24 17:52:17 1584
原创 设计模式13——Bridge设计模式
Bridge桥接设计模式是将一组功能(实现)与另一组使用该功能的其他对象(行为)分离开来,以便达到单一因素变化,然后使用对象调用的方式将这两组关联系起来,将问题的行为和实现分离开来实现,通过用聚合代替继承来解决子类爆炸性增长的问题。 Bridge桥接设计模式结构如下:还是以画图为例演示Bridge桥接设计模式,例子代码如下://行为interface Shape{pub
2012-04-24 15:17:46 1764
原创 设计模式12——Decorator设计模式
Decorator装饰设计模式是动态给一个对象添加一些额外的职责,但同时又不影响对象本身已有的功能。通常使用继承来实现功能的扩展,但是如果这些需要扩展的功能的种类很烦多,就会生成很多子类,增加系统复杂性。同时由于使用继承实现功能的扩展时,必须可预见这些扩展功能,这些功能是编译时就确定的了,是静态的。使用Decorator装饰设计模式就可以根据功能需要有用户动态决定加入的方式和时机,实现“即插即
2012-04-23 17:39:24 1598
原创 设计模式11——Composite设计模式
Composite组合设计模式属于对象的结构模式,有时又叫做部分-整体(Part-Whole)模式。 组合设计模式将对象组织到树型结构中,可以用来描述整体与部分的关系。组合模式可以使客户端将单纯元素与复合元素同等看待。 组合设计模式涉及到的三个角色 (1).抽象构件(Component)角色:这是一个抽象角色,它给参加组合的对象规定一个接口。这个角色给出共有的接口机器默认行为。 (
2012-04-23 15:46:10 1650
原创 设计模式10——Adapter设计模式
Adapter适配器模式是将两个不兼容的类组合在一起使用。生活中笔记本电脑和手机等数码产品的充电器就是一个适配器,将家用220V的交流电转换为笔记本或手机正常工作所需的目标电压和电流。适配器起到一种转换和包装的作用。Adapter设计模式主要目的组合两个不相干类,常用有两种方法:第一种解决方案是修改各自类的接口。但是如果没有源码,或者不愿意为了一个应用而修改各自的接口,则需要使用Adapter
2012-04-23 14:19:53 11881 1
原创 设计模式9——Façade设计模式
Façade门面设计模式为子系统中的一组接口提供一个一致的界面,应用程序本身将不再直接依赖于子系统原件,而是依赖一个门面,当想要修改某个原件的行为时,只需要修改实现类即可,应用程序本身不需要做任何修改。Façade门面设计模式结构如下:以JDBC为例演示Façade门面设计模式://JDBC Facadeinterface JDBCUtil{ public Statem
2012-04-23 11:10:35 3438
原创 《Effective java》读书笔记2——内存泄漏
JVM提供了垃圾回收器,java程序员再也不用想C/C++程序员一样整天为对象的清理工作而焦头烂额,但是并非说Java中不存在内存泄漏的情况,下面展示一个典型的内存溢出例子。使用数组作为底层数据结构实现一个Stack栈数据结构的容器,代码如下:public class Stack{ private Object[] elements; private int size = 0;
2012-04-21 18:58:38 2536
原创 《Effective java》读书笔记1——避免创建不必要的对象
Java中Sting很特别,有如下两种初始化方式:(1).String s1 = “This isstring1”;(2).String s2 = new String(“Thisis string2”);第一种字符串初始化方式,当有多于一个字符串的内容相同情况,字符串内容会放在字符串缓冲池中,即字符串内容在内存中只有一份。第二种字符串初始化方式,不论有没有字符串值相同,每次都会在
2012-04-21 18:56:16 2818 1
原创 设计模式8——Builder设计模式
Builder建造者模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们,用户不需要了解所构建对象的内部具体构建细节,Builder建造设计模式的目的是为了将构造复杂对象的过程和它的部件解耦。Builder建造者设计模式中有两个重要角色:Director指导者和B
2012-04-21 14:50:58 2161 1
原创 设计模式7——Prototype设计模式
Prototype原型设计模式是指用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新的对象。Prototype原型模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何关于对象创建的细节。原型模式的UML图如下:Prototype模式例子如下://抽象原型类 abstract class Shape implements Colneable{ String
2012-04-19 15:16:46 1443
原创 Java中的深拷贝和浅拷贝
1.浅拷贝与深拷贝概念(1)浅拷贝(浅克隆) 浅拷贝又叫浅复制,将对象中的所有字段复制到新的对象(副本)中。其中,值类型字段(java中8中原始类型)的值被复制到副本中后,在副本中的修改不会影响到源对象对应的值。而引用类型的字段被复制到副本中的还是引用类型的引用,而不是引用的对象,在副本中对引用类型的字段值做修改会影响到源对象本身。浅拷贝简单归纳就是只复制一个对象,对象内部存在指向其他
2012-04-19 14:05:06 8869 1
原创 使用存储过程将Oracle数据批量导出为多个csv文件
数据库有如下表结构:aaa ( obj_id NUMBER, (Primary Key) obj_name VARCHAR2(80), obj_size NUMBER NOT NULL obj_time NUMBER NOT NULL ms_version
2012-04-16 16:35:22 9149 2
原创 设计模式6——Factory设计模式
Factory工厂设计模式为创建对象提供了一种抽象,而对使用者屏蔽了对象创建的具体细节过程,工厂模式有三种:简单工厂模式,抽象工厂模式和工厂方法模式。(1).简单工厂模式:又叫静态工厂模式,简单工厂只包括一个抽象产品类(该类可以是接口,也可以是具体的类),所有需要的产品类都是该抽象产品类的子类。简单工厂模式中工厂为具体产品工厂,产品为抽象产品,由工厂实例创建产品实例:一个生
2012-04-13 17:14:06 2188
原创 设计模式5——Strategy设计模式
Strategy策略设计模式主要是定义一系列的算法,把这些算法封装成单独的类,在运行时动态选择需要的算法,策略模式机制如下:策略模式例子如下://文本替换策略abstract class TextStrategy { protected String text; public TextStrategy(String text) { t
2012-04-13 13:05:27 1344
原创 设计模式4——Itrator设计模式
Iterator迭代器模式,提供一种统一的方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节,迭代器模式是为容器而设计。程序对容器对象的访问必然涉及到遍历算法,不同的容器遍历算法是不同的,List,Stack和Set等等常用容器遍历元素的算法各不相同。解决容器遍历算法差异有两种方案:第一,可以将遍历方法塞到容器对象中去,容器承受了过多的功能,它不仅要负责自己“容
2012-04-12 15:51:54 1778
原创 设计模式3——State设计模式
State状态设计模式类似于Switch多路分支功能的开关,State状态模式机制如下:状态模式UML图如下:State状态设计模式用于改变对象的行为,在代理的生命周期里,随着状态变化从一个目标实现程序切换到另一个目标实现程序。我们经常遇到如下的程序代码:public class Creature{ private Boolean isFrog = tru
2012-04-07 16:27:15 1673
原创 设计模式2——Proxy设计模式
Proxy代理设计模式是一种控制对象访问的设计模式,类似于网络代理,网络代理机制如下图:Proxy代理设计模式机制如下:代理模式UML图如下:代理模式顺序图如下:客户端程序通过代理程序来访问真正的目标程序,代理程序对外隐藏了目标程序。普通代理设计模式例子代码如下:interface ProxyBase{ public void f();
2012-04-06 17:16:37 2064 3
原创 设计模式1——Singleton设计模式
Singleton单类模式是最简单的设计模式,它的主要作用是保证在程序运行生命周期中,使用了单类模式的类只能有一个实例对象存在。单类模式实现了类似C语言中全局变量的功能,单类模式常用于注册/查找的服务。单类模式的UML图如下:单类模式有两种实现方式:饱汉模式和饿汉模式,如下:1.饱汉单类模式例子代码:public class Singleton1{ //
2012-04-04 18:09:43 2872 5
XFire与Spring框架集成,实现WebService
2011-03-04
基于Annotation写的简单数据校验框架
2010-08-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人