`
skydove
  • 浏览: 18588 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

java设计模式学习笔记

阅读更多

单例模式:一定要注意定义私有的构造函数,而且考虑到多线程环境,一定要在getInstance方法上加同步,当然如果定义属性的时候就已经new出单例对象就不会出现同步问题,具体例子,网上很多了。

 

工厂模式:简单工厂模式直接返回具体的对象实例了;抽象工厂模式返回的是抽象的定义,具体返回的对象由其子类去实现。

 

代理模式:简单代理模式,要定义接口、代理类、被代理类。相当于依赖注入,把被代理的对象作为一个属性放到代理对象中,然后需要调用被代理对象的方法时可以对其进行一些封装,例如:要叫老板审批,代理者秘书就可以在审批前后先做一些记录然后再调用老板的审批操作。

动态代理模式,主要利用java.lang.reflect包中的InvocationHandler和Proxy.newProxyInstance来实现的。定义一个被代理类实现一个接口,然后定义个代理类实现InvocationHandler,并且注入一个对象属性(也就是被代理类),这样在代理类的invoke方法中就可以对被代理类的实现进行封装。

调用如下:

RealSubject realSubject = new RealSubject();
        Subject proxySubject = (Subject) Proxy.newProxyInstance(Subject.class.getClassLoader(),
                new Class[] { Subject.class }, new ProxyHandler(realSubject));

        System.out.println("===Without Proxy===");
        doSomething(realSubject);

        System.out.println("===With Proxy======");
        doSomething(proxySubject);

 

 

适配器模式:定义一个接口,然后定义一个抽象类去实现这个接口并且实现空方法,定义几个子类继承该抽象类且覆盖父类中的某些方法达到本子类应有的功能。

 

模板模式(Templete):是先定义一个抽象类,实现一些方法,在这些方法中需要调用一个抽象方法,且这个抽象方法必须由子类决定实现的功能,定义多个子类去实现父类的抽象方法。感觉跟适配器模式很像,不一样的是适配器模式的抽象类都实现了所有的空方法,总的来说,还是抽象类跟接口直接的巧妙结合。

 

学的不深,先把理解的给加上,以后有空再上代码~~~

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics