随笔分类 - Java设计模式
摘要:代理和装饰做法是一样的。 只是对同一种做法的不同侧重点进行定义。 装饰一般用于继承的解耦,会增加一些新的方法,作为装饰方法。 代理则不增加新方法,会在被代理对象的行为前后加点料。代理上网就是一个典型,在上网前后加了点操作 个人见解仅供参考
阅读全文
摘要:接口 A{ 统一的方法(); } 一个普通的继承者 B 实现 A{ 统一的方法(){ } } 代码写完了,五年之后B不够用了,我们好几个地方的代码用到B,直接在B里添加方法,对既有的代码来说是冗余的, 我们又想继续用B里的方法,我们可以直接写个类继承B,在里面再添加方法, 装饰模式也可以解决这种事情
阅读全文
摘要:策略模式通过一个Context和多种策略来解决代码中分支较多的情况,使用策略模式让代码更容易维护。 本文内容转自:http://www.cnblogs.com/java-my-life/archive/2012/05/10/2491891.html 这博客的代码看了之后就懂了,为了防止原文丢失,这里
阅读全文
摘要:Chain of Responsibility定义Chain of Responsibility(CoR) 是用一系列类(classes)试图处理一个请求request,这些类之间是一个松散的耦合,唯一共同点是在他们之间传递request. 也就是说,来了一个请求,A类先处理,如果没有处理,就传递到B类处理,如果没有处理,就传递到C类处理,就这样象一个链条(chain)一样传递下去。过滤器就用到了。如何使用?虽然这一段是如何使用CoR,但是也是演示什么是CoR.有一个Handler接口:public interface Handler{ public void handleRequest().
阅读全文
摘要:该代码实现了一个可以注册监听类的类,如果注册了监听类,那么在类的一个方法执行前会执行监听类的方法。并且该监听类方法的参数就是被监听对象。监听类就是事件监听器,被监听对象就是事件源,事件监听器的参数就是事件对象。//设计一个事件源,被监听器监听 Observer(观察者设计模式)public class Demo2 { public static void main(String[] args) { Person p = new Person(); p.registerListener(new PersonListener(){ public void doeat(Event e) { Pers
阅读全文
摘要:动态代理属于Java反射的一种。 当我们得到一个对象,想动态的为其一些方法每次被调用前后追加一些操作时,我们将会用到java动态代理。 下边上代码: 首先定义一个接口: 接着是它的实现: 我们的目的就是通过动态代理技术,在Cls这个类的对象的两个方法执行前后,加上一些打印操作。 现在我们实现一个In
阅读全文
摘要:工厂模式:http://baike.baidu.com/view/1306799.htm 参考博客一篇:http://blog.csdn.net/janepen/article/details/6470471 我在一个类中要调用一个Dao的接口,需要先实例一个实现了Dao接口的类的对象。关于这个Dao的实现类我只知道之后有可能会用JDBC实现也有可能用Hibernate实现,为了之...
阅读全文
摘要:享元模式可以减少内存占用,重复数据不再开辟内存。Integer的-128~127,String的装箱,我认为都可以算做享元模式。其核心(伪)代码如下: private static Map map= new HashMap(); private ConstructorMethod() {} public static method createObject(T1 t1) { T2 t2= map.get(t1); if (t2== null) { t2= new ConcurrentWebSite(t1); map.put(t1, t2); } return t2; }在一个类中通过一个...
阅读全文
摘要:名字就说明了意思,代码示例如下abstract class GetTime{ public final void getTime(){ long startTime = System.getCurrentMillis(); runcode(); long endTime = System.getCurrentMillis(); System.out.println(endTime-stratTime); } public abstract void runcode();}class SubTime extends GetTime{ public void run...
阅读全文
摘要:单例就是只有一个例子,只有一个对象,不允许别人再创建对象。 饿汉式(初始化即创建对象) 懒汉式(方法被调用时,才创建对象,也叫做对象的延时加载) 懒汉式看似省空间,却有可能在多线程时出问题。 举个只有两个线程的例子:线程A被单核CPU执行到①,单核CPU切入线程B去执行①,仍然会通过判断,此时A,B
阅读全文