设计模式
文章平均质量分 82
发呆程序员
好习惯要坚持下去
展开
-
cglib动态代理
前言 jdk中的动态代理通过反射类Proxy和InvocationHandler回调接口实现,要求委托类必须实现一个接口,只能对该类接口中定义的方法实现代理,这在实际编程中有一定的局限性。 cglib实现 使用cglib[Code Generation Library]实现动态代理,并不要求委托类必须实现接口,底层采用asm字节码生成框架生成代理类的字节码,下面通过一个例子看看使转载 2017-11-09 10:54:20 · 590 阅读 · 1 评论 -
适配器模式(Adapter)
网上看到不少关于适配器模式的讲解,其中对于适配器模式解释的过于专业,一时不是特别理解适配器模式到底是用来干嘛的,具体的适用场景在哪,其最精髓的地方到底在哪。 本文结合自己的理解,阐述下对适配器模式的看法。 假设系统存在一个现有的类UserInfo: 1 class UserInfo { 2 3 private Map userBaseInfo; 4 5转载 2016-03-11 15:35:01 · 370 阅读 · 0 评论 -
Java 之工厂方法和抽象工厂模式(Abstract Factory)
1. 概念 工厂方法:一抽象产品类派生出多个具体产品类;一抽象工厂类派生出多个具体工厂类;每个具体工厂类只能创建一个具体产品类的实例。 即定义一个创建对象的接口(即抽象工厂类),让其子类(具体工厂类)决定实例化哪一个类(具体产品类)。“一对一”的关系。 抽象工厂:多个抽象产品类,派生出多个具体产品类;一个抽象工厂类,派生出多个具体工厂类;每个具体工厂类可创建多个转载 2016-02-24 13:11:36 · 626 阅读 · 0 评论 -
策略模式(Strategy)
1、策略模式设计原则 第一、找出应用需要变化的部分,把他们独立出来,不要和那些不需要变化的代码混合在一起,将需要变化的部分和不需要变化的部分分别使用接口进行实现 然后将变化的接口注入到不需要变化的接口进行组合实现需求 第二、多用组合,少用继承 第三、使用接口编程 2、 第一、通过分离变化得出策略接口strategy 第二、strategy的实现类 第三、客户程序持有一个“strat原创 2015-11-19 08:26:24 · 370 阅读 · 0 评论 -
观察者模式扩展(二)
1、使用java提供的观察者进行实现 //继承java本身的父类获得目标具体实现类 public class concreteSubjectForJava extends Observable { //目标对象更新的内容 private String weatherContent; public String getWeatherContent() { return weat原创 2015-11-16 08:53:07 · 401 阅读 · 0 评论 -
观察者模式基础实现(一)(Observer)
1、观察者模式使用情况 第一、当一个抽象模型有两个方面,其中一个方面的操作依赖于另一个方面的状态变化 第二、如果在更改一个对象的时候,需要同时连带改变其他的对象,而且不知道究竟应该有多少对象需要被连带改变 第三、当一个对象必须通知其他的对象,但是你又不希望这个对象和其他被通知的对象是松散耦合的 3、观察者模式代码结构: 第一、目标接口,定义添加观察者到需要被通知的列表中和将制定的观察者从原创 2015-11-16 08:32:51 · 463 阅读 · 0 评论 -
模板方法模式(Template Method)
模板方法模式实现要素:准备一个抽象类,将部分逻辑以具体方法的形式实现,然后声明一些抽象方法交由子类实现剩余逻辑,用钩子方法给予子类更大的灵活性。最后将方法汇构成一个不可改变的模板方法。 一、抽象基类 1、基本方法(公用) 2、抽象方法 3、钩子函数:提供一个默认或空的实现,具体的子类可以自行决定是否挂钩以及如何挂钩 4、将基本方法和抽象方法组合成一个模板方法(必须是final修饰,模板方原创 2015-10-12 08:37:01 · 359 阅读 · 0 评论 -
java代理模式
代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能. 这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法 举个例子来说明代理的作用:假设我们想邀请一位明星,那么并不是直接连接明星,而是联系明星的经纪...转载 2017-11-09 10:32:07 · 923 阅读 · 0 评论 -
责任链模式
责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。 从击鼓传花谈起 击鼓传花是一种热闹而又紧张的饮酒游戏。在酒宴上宾客依次坐定位置,由一人原创 2017-11-09 09:56:42 · 540 阅读 · 0 评论 -
外观模式(Facade)
张三自从毕业后开始做软件开发,做着做着发现不爽了,钱赚不了太多,头发也白了。于是拿着一点小资本,想着做点小生意。瞅着眼前的餐饮行业还不错,于是打算开一家餐馆。开参观可不是一件容易的事,仅仅行政类的审批流程就不少。至少包括办理卫生许可证,办理税务登记,办理工商登记等。 我们先来看一下行政审批接口: 1 interface Executive{ 2 3 public vo转载 2016-03-11 17:31:38 · 447 阅读 · 1 评论 -
单例模式(SingleTon)
在Java设计模式中,单例模式相对来说算是比较简单的一种构建模式。适用的场景在于:对于定义的一个类,在整个应用程序执行期间只有唯一的一个实例对象。如Android中常见的Application对象。通过单例模式,自行实例化并向这个系统提供这个单一实例的访问方法。根据此单一实例产生的时机不同(当然,都是指第一次,也是唯一一次产生此单一实例时),可以将其分为懒汉式、饿汉式和登记式。一、懒汉式:其特点是...原创 2016-03-11 15:44:56 · 282 阅读 · 0 评论