java设计模式
文章平均质量分 72
Jamin_Ma
无法拥有认知以外的财富
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java设计模式--状态模式 State
当对象的状态改变时,同时改变其行为。或者说每个状态有着相应的行为。不只是根据状态的,也有根据对象的属性不同,对象的行为也不一样。状态模式 State原创 2017-04-11 11:16:31 · 472 阅读 · 0 评论 -
java设计模式--工厂方法模式 & 抽象工厂模式
工厂方法模式:定义一个用于创建对象的接口, 让子类决定实例化哪一个类。 工厂方法使一个类的实例化延迟到其子类。 角色: Product 抽象产品,负责定义产品的共性,实现对事物抽象的定义 Creator 抽象创建类,也就是抽象工厂,具体如何创建产品类是由具体的实现工厂完成 ConcreteCreator 具体实现工厂 总结一下模板代码:/*** 产品抽象*/public interf...原创 2018-07-06 14:59:06 · 359 阅读 · 0 评论 -
java设计模式--代理模式
代理模式定义: 为一个对象提供一种代理,用来控制对这个对象的访问。角色分类:1、Subject 抽象主题角色 抽象主题类可以是抽象类也可以是接口, 是一个最普通的业务类型定义, 无特殊要求。2、RealSubject 具体主题角色,被委托角色、 被代理角色。 实现Subject接口,是业务逻辑的具体执行者。3、Proxy 代理主题角色。是委托类、 代理类。 它负责对真实角色的应用, 把所有抽象主...原创 2018-05-08 15:07:16 · 263 阅读 · 0 评论 -
JDK 动态代理源码分析
JDK动态代理,通过实现被代理类的所有接口,生成一个字节码文件后构造一个代理对象,通过持有反射构造被代理类的一个实例,再通过invoke反射调用被代理类实例的方法,来实现代理。代码入口Proxy.newProxyInstance():public static Object newProxyInstance(ClassLoader loader, Class<?>[] in...原创 2018-05-08 15:06:14 · 486 阅读 · 0 评论 -
java设计模式--命令模式
命令者模式是一个对象, 它封装了调用另一个方法的所有细节, 命令者模式使用该对象, 可以编写出根据运行期条件, 顺序调用方法的一般化代码。成员:命令接收者 执行实际任务命令者 封装了所有调用命令执行者的信息发起者 控制一个或多个命令的顺序和执行客户端 创建具体的命令者实例举个例子: 领导要加一个功能就是命令,那么就要有产品出需求,设计出设计,程序员编码。领导不会产品部、设计部、程序员一个...原创 2017-04-12 18:47:45 · 435 阅读 · 0 评论 -
java设计模式--迭代器模式 Iterator,备忘录模式 Memento,中介者模式 Mediator
迭代器模式 Iterator JDK 中集合类都有 iterator() 方法,此方法返回一个Iterator 接口的子类,不同的集合对Iterator实现不同。这样对于不同集合就统一定义了访问集合的方法。可以看看源码。备忘录模式 Memento 备忘录(Memento)模式又称标记(Token)模式。在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后...原创 2018-02-08 11:02:36 · 460 阅读 · 0 评论 -
java设计模式--模板方法
模板方法 Template整体算法的设计是一个抽象类, 它有一系列抽象方法, 代表算法中可被定制的步骤, 同时这个类中包含了一些通用代码。 算法的每一个变种由具体的类实现, 它们重写了抽象方法, 提供了相应的实现。模板方法模式通过把不变的行为搬移到超类,去除了子类中的重复代码。子类实现算法的某些细节,有助于算法的扩展。通过一个父类调用子类实现的操作,通过子类扩展增加新的行为,符合“开放-封闭原则...原创 2018-02-08 11:50:02 · 589 阅读 · 0 评论 -
java设计模式--策略模式
策略模式策略模式使用的就是面向对象的继承和多态机制,主要有三个角色:1、Context 封装角色 把策略,算法进行封装,避免直接访问。封装可能存在的变化 2、Strategy 抽象策略角色(抽象策略接口) 策略、算法的抽象,通常为接口,定义每一个策略和算法具有的方法和属性。 3、ConcreteStrategy 具体策略角色 实现提名策略中的操作 ,该类含有具体的算法。 示例: 有一个压缩的功能,...原创 2017-03-28 15:12:24 · 334 阅读 · 0 评论 -
java设计模式-适配器模式
适配器模式:要把A 和 B 连接起来,但是卡扣的开关不对,那么就需要C,把两都连接起来。这种模式就是适配器模式。定义:将一个类的接口变换成客户端所期待的另一种接口, 从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。适配器角色: 目标角色: Target 源角色: Adaptee 适配器角色: Adapter , 把Adaptee 转换成 Target 的角色。...原创 2018-01-29 20:05:26 · 294 阅读 · 0 评论 -
java设计模式--结构模式
亨元 Flyweight JDK 中如:String 类。 可以共享的对象使用同一个对象,这样就节省的内存空间。桥接 Bridge 将抽象部分与行为部分分离,使它们都可以独立地变化。 举例说明:“人”是一种抽象,如人可以分为“男人”、“女人”;人也行为,如“奔跑”,但是如果是别的动物也有“奔跑”这个行为,所以不能把“奔跑”这个行为抽象到“人”这个抽原创 2017-04-07 15:23:19 · 318 阅读 · 0 评论 -
java设计模式--责任链模式
对于一个业务的处理,当前的处理者要么处理完毕做出回应,要么把请求转发到后序环节处理(最后的都没处理不了,就不处理了呗)。这些处理者组成一个处理的链表,就是责任链模式。示例: 有一个订单打折的审批流程,销售人员最多能打折97% 为1级,销售主管打折不能大于95% 为2级,打折大于95%要经理审批为3级。如果不使用责任链模式,那么就会有如下代码: public static void main...原创 2017-04-12 15:45:27 · 503 阅读 · 0 评论 -
java设计模式-装饰器
装饰器模式: 动态地给一个对象添加一些额外的职责,装饰模式相比生成子类更为灵活。 Component:抽象构件ConcreteComponent 具体构件,要被装饰的类Decorator:装饰角色,具体装饰器的父类ConcreteDecorator: 具体装饰器角色示例: 对一个字符串打印前,进行两个处理:1、转大写,2、删除所有的 aa 字符串。这两步顺序要求不一样就会产生不一样的结果。 伪...原创 2018-01-30 17:07:54 · 302 阅读 · 0 评论 -
java设计模式--观察者模式 Observer
观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对象,主题对象在状态上的变化能够通知所有的依赖于此对象的那些观察者对象。JDK 提供了Observer 接口 和 Observable类:Observer 接口:只定义了一个方法,update()。当被观察者对象的状态发生变化时,这个方法就会被调用。Observable类:被观察者类都是java.util.原创 2017-04-12 15:33:37 · 376 阅读 · 0 评论 -
java设计模式--访问者模式 Visitor
作用于某个对象群中各个对象的操作。它可以使你在不改变这些对象本身的情况下,定义作用于这些对象的新操作。访问者模式的目的是要把处理从数据结构中分离出来,如果系统有比较稳定的数据结构,又有易于变化的算法的话,就方便使用访问者模式,如果数据结构不稳定,就不适合使用。 Iterator iterator = collection.iterator() while (iterator.原创 2017-04-12 15:23:16 · 374 阅读 · 0 评论 -
java 设计模式---创建对象
静态工厂,JavaBeans 模式,builder 模式,单例1、静态工厂方法入口Boolean创建对象,原码如下: public static Boolean valueOf(String s) { return parseBoolean(s) ? TRUE : FALSE; }优势:1)有方法名称,如果有多个构造器,可能不知道要调用原创 2017-03-24 09:53:00 · 764 阅读 · 0 评论 -
java设计模式--原型模式
原型模式定义: 用原型实例指定创建对象的种类, 并且通过拷贝这些原型创建新的对象。 原型模式的核心是一个clone方法, 通过该方法进行对象的拷贝, Java 提供了一个Cloneable接口来标示这个对象是可拷贝的,在JVM中具有这个标记的对象才有可能被拷贝。 比如:比如批量发送邮件,邮件模板是一样的,发送给不同的人内容不同,那么就可以把模板 clone 给不同的发送者,发送者修改一下内容模板内...原创 2018-07-06 16:05:20 · 967 阅读 · 0 评论
分享