`
shuofenglxy
  • 浏览: 194391 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
解释器模式是一种行为模式。主要方法就是形成一个解释语法树,然后根据语法树中的语法规则执行每一个语法字句即可。 解释器模式类图:                                说明:这个类图只是demo的类图示例,真正的解释器还包括测试类中的语法树,然后根据不同的解释器去对context内容进行解释执行。 具体代码示例: 解释器接口: package interpreterPattern; public interface Interpreter { void interpret(Context context); } 加法器 packag ...
命令模式是一种行为模式,解耦了发送方与接收方。它将请求封装成一个对象,使得可以用不同的请求使得客户端参数化,典型应用在支持redo undo  事物等场景。 命令模式类图:                                  ...
职责链模式是保证一个事件一定能够被处理的一种模式。比如:一个coder去请假,temLeader批5天一下的,Manager批10天的,就这么简单。职责链模式是一种行为模式。 职责链模式类图:                       说明: Coder发出Something请求,经过TeamLeader->Manager构成的链,如果TeamLeader能处理,就返回结果,不能则有Manager处理。变化之处在于,当TeamLeader不在时(也可以是因为某种原因这里down掉了),则由链中其他环节去处理了,这样就保证了请求一定能被处理,增强了系统的健壮性。 具体代码: ...
java中的动态代理都需要实现一个实现了InvocationHandler接口的代理类,在该类中需要实现invoke方法,并且需要注入你想要代理的目标类对象实例。然后就可以对想要代理的方法进行操作了。 动态代理类图:                 ...
代理模式貌似是java中用途最广的设计模式之一,也是最重要的设计模式之一。使用代理模式能够封装设计细节,甚至能够改变被代理对象的行为,也可以在被代理对象开始行为之前做一些前期的处理【权限认证,开启事务等等就可以在这个地方做】。我们先看看前面两种代理方式:兄弟代理和父子代理。代理模式也是一种结构型模式。 代理模式类图:                   具体demo: 兄弟代理是指被代理对象实现了某一接口,那么可以用代理去实现这一接口,从而能够代替被代理对象完成接口行为。 Person接口: package proxyPattern; public interface Per ...
外观模式,一种封装底层实现的模式。使得调用者不用关心谁去具体的完成功能操作,解耦了请求者与操作者,封装了细节。外观模式也是一种结构型设计模式。 外观模式类图:                                 具体demo: Facade接口: package facadePattern; public interface Facade { void doA(); void doB(); } 具体实现: package facadePattern; public class FacadeImpl implements Facade{ ...
装饰模式是对对象功能的扩展的一种模式,好处在于不更改原有对象的特性,只是通过注入方式为对象添加一些额外的功能,使得对象的功能丰富,特别有利于对对象行为的多个细小行为的添加。装饰模式是一种结构型模式。 装饰模式类图:                                 具体demo示例: //组件抽象类 package decoratorPattern; public abstract class Component { public abstract void doSomething(); } 具体实现: package decorator ...
组合模式,顾名思义,采用了组合的方式,使得简单的对象可以组合成复杂的对象,同时保证了简单对象和复杂对象使用上的一致性。这是一种典型的has- a 关系。用过组合 使得简单对象成为了复杂对象的一部分,而在使用上,简单对象和复杂对象又是一致的。 组合模式类图:                具体实例demo: 抽象对象: package compositePattern; import java.util.ArrayList; import java.util.List; public abstract class Person { protected Lis ...
桥接模式将抽象部分与具体实现分离,使得都能独立的变化。它采用注入实现的方式来实现解耦的,而通常注入的行为只是被注入者行为的一部分。桥接模式也是一种结构型设计模式。 桥接模式类图:            具体示例demo: 抽象消息 package bridgePattern; public abstract class AbstractMessage { private MessageSending messageSending; private String msgContent; private String toUserName; public Ab ...
适配器模式,正如适配器这个名字一样,起一个转换的作用。目的是通过接口转化,使得新系统和老系统可以正常交互。适配器模式是一种结构型模式。 适配器模式类图:                  具体实现demo: 新系统: package adapterPattern; public interface NewSystem { public void doAnotherthing(String input); } 实现: package adapterPattern; public class NewSystemImpl implements NewSyste ...
建造者模式是设计模式中另一个重要的创建对象的方法模式。它的特点主要是稳定了创建的过程,比如下面的例子中就是每个产品的创建过程都包括创建A部分和创建B部分,但不同的builder可以有自己的方式去创建产品,比如不同的房地产商可以建不同的房子【大房子、小房子】,只要建造过程稳定一致就可以了。 建造者模式类图:                 建造者接口: package builderPattern; public interface Builder { Product getProduct(); Object buildProductPartA(); Objec ...
原型模式比较简单,就是利用object中的clone()方法做一次深度拷贝,复制一份原有对象即可。这种方式的好处在于原有对象的拷贝没有调用原有对象的New方法,也就没有触发原有对象的构造函数链,提高了对象制造效率。这种模式应用场景在于对象基本相同,除了个别属性字段有区分,可以复制后更改这些个别字段即可。 原型模式类图:                                具体实现demo: 原型类: package protypePattern; public class ProtoType implements Cloneable{ private Str ...
抽象工厂方法模式是用途最广的方法模式之一,其主要思想是利用工厂生产组合的复杂实例组,由于工厂、不同的实例组中实例一般都抽象为接口层次,所以很方便添加不同的具体工厂和不同的实例组。主要用于创建一系列相关的对象组或是其他方面。 抽象工厂方法模式类图: 具体实例demo: 建造工厂: package abstractFactory; public interface CreatorFactory { Food getFoodInstance(); Fruit getFruitInstance(); } 具体工厂1: package a ...
工厂方法模式也是一种创建对象的设计模式,属于创建型设计模式。工厂方法模式定义了对象工厂接口,抽象出了获取对象实例方法,而将具体的创建对象工作放到了具体的类创建工厂进行。 工厂方法模式类图:           具体实现代码示例: 工厂接口: package factoryPattern; public interface Factory { Fruit factorygetInstance(); } 具体工厂1: package factoryPattern; public class AppleFactory implements Factory{ ...
简单工厂模式又叫静态工厂模式,是一种创建对象实例的设计模式。通过对象创建工厂根据不同的创建请求创建不同的类对象。将不同对象的创建工作集中到一个创建工厂来完成。 简单工厂模式类图:                   ...
Global site tag (gtag.js) - Google Analytics