- 浏览: 34529 次
- 性别:
- 来自: 上海
最新评论
文章列表
引用http://blog.csdn.net/hguisu/article/details/7557252
定义
策略模式(Strategy)属于对象行为型设计模式,主要是定义一系列的算法,把这些算
法一个个封装成拥有共同接口的单独的类,并且使它们之间可以互换。策略模式使这些算法
在客户端调用它们的时候能够互不影响地变化。这里的算法不要狭义的理解为数据结构中算
法,可以理解为不同的业务处理方法。
适用性
1.许多相关的类仅仅是行为有异。“策略”提供了一种用多个行为中的一个行为来配置一个类的方法。
2.需要使用一个算法的不同变体。
3.算法使用客户不同的数据。可使用策略模式以避免暴露复杂的、与算法相关的数据结构。
4.一个类定义了多种行为,并且这些行为在这个类的 ...
两个超级大数相加【原】
- 博客分类:
- java基础
两个超级大数相加,在JAVA中可以用BigDecimal实现(BigDecimal类型数据对位数不做限制,理论上可以任意大),也可以通过数组来实现。
BigDecimal能承受多大数,我没有做过验证,但是数组的方式肯定是没有限制的。
BigDecimal实现比较简单:
BigDecimal bd1=new BigDecimal("99999999999999999999943567899999999999");
BigDecimal bd2=new BigDecimal("987654321");
System.out.println(bd1. ...
结论:
1、不管有木有出现异常,finally块中代码都会执行;
2、当try和catch中有return时,finally仍然会执行;
3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;
4、finally中最好不要包含return,如果try或cathch中和finaly同时有return.返回值不是try或catch中保存的返回值。
即执行的顺序就是try,cathch,finaly,try/cathch中的 ...
转自:http://www.cnblogs.com/jqyp/archive/2010/08/20/1805041.html
JAVA的动态代理
代理模式
代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。
按照代理的创建时期,代理类可以分为两种。
静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行 ...
观察者模式-JDK支持
- 博客分类:
- 设计模式
JDK对观察者模式的支持主要是通过Observable类和Observer接口。
继承Observable类表示“主题”角色,实现Observer接口表示观察者。
Observer的简单功能介绍
update(Observable o, Object arg) Observable唯一的方法,在被通知时被
Observable调用.o表示主题对象,arg表示通知信息。由此看出这是一个“推-拉结合”使
用的方式。arg不传值就是拉模式,传值就是推模式,当然也可以推一部分,拉一部分。
Observable的简单功能介绍:
notifyObservers() 如果hasChanged ...
GoF说道:Observer模式的意图是“定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新”。
适用性
1.当一个抽象模型有两个方面,其中一个方面依赖于另一方面。
将这二者封装到独立的对象中以使它们可以各自独立地改变和复用。
2.当对一个对象的改变需要同时改变其它对象,而不知道具体有多少对象有待改变。
3.当一个对象必须通知其它对象,而它又不能假定其它对象是谁。换言之, 你不希望
这些对象是紧密耦合的。
参与者
.抽象主题(Subject)角色:主题角色把所有的观察者对象的引用 ...
转载:http://blog.csdn.net/m13666368773/article/details/7709156
java 中介者模式
- 博客分类:
- 设计模式
定义:用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。
类型:行为类模式
类图:
中介者模式的结构
中介者模式又称为调停者模式,从类图中看,共分为3部分:
抽象中介者:定义好同事类对象到中介者对象的接口,用于各个同事类之间的通信。一般包括一个或几个抽象的事件方法,并由子类去实现。
中介者实现类:从抽象中介者继承而来,实现抽象中介者中定义的事件方法。从一个同事类接收消息,然后通过消息影响其他同时类。
同事类:如果一个对象会影响其他的对象,同时也会被其他对象影响,那么这两个对象称为同事类。在类图中 ...
定义:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。
类图:
迭代器模式的结构
抽象容器:一般是一个接口,提供一个iterator()方法,例如java中的Collection接口,List接口,Set接口等。
具体容器: ...
定义
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。
结构和说明
上面的类图,一开始我有一些疑问,不知Invoker为什么要存在。现在想通了,Clie ...
转自:《深入浅出设计模式》
一、 引言
初看责任链模式,心里不禁想起了一个以前听过的相声:看牙。说一个病人看牙的时候,
医生不小心把拔下的一个牙掉进了病人嗓子里。各个科室的医生推卸责任,搞得病人因此楼
上楼 ...
转自:http://lavasoft.blog.51cto.com/62575/51926/
jdk1.5 returnvalue
- 博客分类:
- 多线程
Callable接口:
返回结果并且可能抛出异常的任务。实现者定义了一个不带任何参数的叫做 call 的方法。
Callable 接口类似于 Runnable,两者都是为那些其实例可能被另一个线程执行的类设计的。但是 Runnable 不会返回结果,并且无 ...
一、API研究
线程池类为 java.util.concurrent.ThreadPoolExecutor,常用构造方法为:
ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime, TimeUnit unit,
BlockingQueue<Runnable> workQueue,
Rejected ...