自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 【JAVA设计模式】23.访问者模式

访问者模式指作用于一个对象结构体上的元素操作,访问者使用户在不改变结构体中类基础上定义一个新的操作UML图:其具体操作过程相当于Element是一个房间的主人,而Visitor则是想要拜访这个房间的访客,其中访客有visit操作,用于访问房间,而Element则有一个accept方法用于接收访客,即调用访客的visit方法,使其可以访问自己的房间。首先定义Element及其实现类:...

2018-09-26 22:14:13 127

原创 【JAVA设计模式】22.模板方法模式

模板方法模式是在不改变模板结构的前提下在子类中重新定义模板中的内容,可以理解为对父类的调用不变,重新实现其中的方法。UML图:首先定义父类方法,父类的一个公有方法调用了另一个抽象的方法,其子类实现该抽象方法。abstract class AbstractClass { public void templateMethod() { System.out.pr...

2018-09-26 21:17:58 116

原创 【JAVA设计模式】21.策略模式

策略模式即定义一个统一接口,其实现类为实现同一个目的有这不同的实现方法,是开发过程中较常用的一种设计模式UML图:策略接口及其实现类:interface Strategy { void execute(String str);}class ConcreteStrategy1 implements Strategy { @Override public...

2018-09-26 21:01:54 221

原创 【JAVA设计模式】20.状态模式

状态模式,就是根据当前的状态执行不同的操作,并可以切换状态,红绿灯是个较为形象的例子。UML图:状态接口及其实现类:interface State { void handle();}class ConcreteState1 implements State { @Override public void handle() { Syst...

2018-09-26 16:27:41 152

原创 【JAVA设计模式】19.观察者模式

观察者模式分为观察者和通知者,当观察者注册到通知者时,通知者可以将信息通知到每一个观察者“UML图:观察者接口及其实现类:interface Observer { void update();}class ConcreteObserver implements Observer { private String observerState; pub...

2018-09-26 16:00:44 117

原创 【JAVA设计模式】18.备忘录模式

顾名思义,备忘录模式用于当信息发生改变时回溯回之前存在的某一个版本。UML图:备忘录类Memento,提供修改和获得内部信息的方法:class Memento { private String state; public Memento(String state) { this.state = state; } public S...

2018-09-26 15:23:40 118

原创 【JAVA设计模式】17.中介者模式

对象之间不直接交互,而是通过一个中介者进行交互。UML图:中介者对象:interface Mediator { void operator(Colleague colleague);}class ConcreteMediator implements Mediator { private Colleague colleague1; private ...

2018-09-25 22:51:07 133

原创 【JAVA设计模式】16.迭代器模式

迭代器模式用于生成一个可遍历容器的迭代器,调用迭代器中的方法便可以遍历整个容器UML图:Aggregate接口及其实现类,其createIterator方法返回一个迭代器:interface Aggregate<T> { Iterator<T> createIterator();}class ConcreteAggregate<T&gt...

2018-09-25 21:50:01 94

原创 【JAVA设计模式】15.命令模式

命令模式即向一个invoker传入不同的命令,invoker将会根据传入的命令进行对应的操作UML图:Invoker类接收一个命令作为参数,其invoke方法调用了command的执行方法:class Invoker { private Command command; public Invoker(Command command) { this...

2018-09-25 21:11:03 150

原创 【JAVA设计模式】14.责任链模式

UML图:在处理器对象中存在另一个处理器对象,像一个工作流,从头执行至尾部。处理器接口:interface Handler { void handleRequest(); Handler getSuccessor(); void setSuccessor(Handler successor);}实现类:class ConcreteHandl...

2018-09-25 20:35:17 179

原创 【JAVA设计模式】13.代理模式

UML图:用户通过调用Proxy类对象的方法间接调用RealSubject类对象的方法,和装饰器模式类似。装饰器模式和代理模式的区别:1.代理模式在代理类内部创建对象,装饰器模式通过构造函数将对象传入装饰器内部。(使用代理模式,代理和真实对象之间的的关系通常在编译时就已经确定了,而装饰者能够在运行时递归地被构造。)2.代理模式用于控制方法的访问,装饰器模式用于增加方法的功能(装...

2018-09-25 17:21:51 146

原创 【JAVA设计模式】12.享元模式

享元模式将对象信息分为两类,一个是不受对象具体信息影响,即可共享的对象信息,另一个是不同对象间独立的信息。由于存在可共享的信息,则可设计一个工厂类,工厂类内部存储了大量对象,所有对象都有一个共同的信息,例如:产品类别。先创建一个享元接口:interface Flyweight { /** * 对对象外蕴状态进行赋值操作 * * @param ex...

2018-09-25 15:34:05 87

原创 【JAVA设计模式】11.外观模式

外观模式为用户封装了一系列操作,例如在一个房子里,暴露了“open”操作,实际上调用“open”即调用了开门、开灯、开电视等细节操作。UML图:假设现在有门类:class Door { private boolean status = false; public void open() { status = true; } pu...

2018-09-25 14:45:05 135

原创 【JAVA设计模式】10.装饰器模式

装饰器模式,就是在被装饰对象上添加一层装饰,使用户直接操作装饰类就可对被装饰对象进行操作。问:使用装饰器模式和直接使用继承有什么区别答:直接使用继承在被装饰对象较多时会导致子类骤增,装饰器模式可以理解为和桥接模式一样是为了解决子类过多问题的解决方案,二者差别在于桥接模式是单纯为了解决多个独立维度变化,而装饰器模式是为了在源操作上加新的操作。JDK中io即是使用装饰器模式:Outp...

2018-09-21 16:43:56 236

原创 【JAVA设计模式】9.组合模式

目录即是最经典的组合模式实践,一个对象由多个对象(可以是自身类型)组合而成,形成一个复杂的对象UML图:首先定义一个总接口,用于定义所有组件,所有组件都实现该接口:interface IComponent { void operation(); void add(IComponent c); void remove(IComponent c); ...

2018-09-21 14:24:52 152

原创 【JAVA设计模式】8.桥接模式

桥接模式是为了使不同维度的变量独立变化的而不相互影响的设计模式例如绿茶红茶和大杯小杯有不同的维度,如果根据排列组合,会生成4个类,并且若杯大小和茶种类各增加一个时,所产生的类高达9种,桥接模式便可以解决这类问题。UML图:分析上述情况,首先定义一个茶种类接口:interface TeaKind { double getPrice();}以及其实现类,其中包括了红...

2018-09-19 16:22:07 491

原创 【JAVA设计模式】7.适配器模式

使用适配器模式的场景:想使用现有的类,但是又不符合系统需求 需要创建一个可复用的类,使不相容的类相结合 需要改变多个子类接口,在作用相同但名称不同的类或方法之间适配类适配器:通过继承的方式使所有方法适配到一个类中:class ClassAdaptee { public void operation1() { System.out.println("ope...

2018-09-19 14:47:00 124

原创 【JAVA设计模式】6.单例模式

在所有创建型设计模式中,被讨论最多的便是单例模式。UML图:从UML图来看,单例模式很简单,目的就是为所有需要使用该类的实例时返回同一个对象,即uniqueInstance。最简单的一种实现方法即将具体对象放在类中,将作用域设为private,尽可通过getInstant静态方法对其进行生成和获取。但这种实现方式存在多线程并发的问题,可以在getInstant方法上加synch...

2018-09-17 21:56:13 150

原创 【JAVA设计模式】5.原型模式

原型模式是个较少被提到的设计模式,其本质就是提供了clone方法的接口,其实现需要满足以下几点:1. 对任何的对象x,都有x.clone() !=x,即克隆对象与原对象不是同一个对象。 2. 对任何的对象x,都有x.clone().getClass()==x.getClass(),即克隆对象与原对象的类型一样。 3. 如果对象x的equals()方法定义恰当,那么x.clone().eq...

2018-09-17 21:11:47 218

原创 【JAVA设计模式】4.生成器模式

通过一步一步的创建组件生成一个完整的对象,在具体的生成器对象中对对象进行组装:UML图:在客户端中通过调用Builder的buildPart()方法(buildPart方法泛指各种build方法)对对象进行生成:Director director = new Director(new ConcreteBuilder());director.buildProduct();其中...

2018-09-17 20:49:15 245

原创 【JAVA设计模式】3.抽象工厂模式

在工厂模式的基础上,对产品类进行分类,一个具体的工厂类负责生产一种产品接口中的一个具体具体产品类。当在原有产品接口新增具体类时只需新增一个具体工厂类,符合开闭原则。UML图(图片来自网络):创建具体产品类时需要知道其实现接口的类型:Creator creator1 = new ConcreteCreator1();ProductA productA1 = creator.f...

2018-09-16 21:49:47 109

原创 【JAVA设计模式】2.工厂模式

工厂模式在简单工厂模式的基础上,对工厂类也添加了工厂接口,解决了简单工厂模式不符合开闭原则的问题(简单工厂模式添加新产品时需要修改工厂类,而工厂模式只需添加一个集成工厂接口的工厂类即可,不需要修改原有的代码)UML图(图片来自网络):客户端需先创建实现工厂接口的工厂类,再通过调用Creator.factory()创建具体产品类:Creator creator = new Tube...

2018-09-16 20:47:57 124

原创 【JAVA设计模式】1.简单工厂模式

简单工厂模式是创建型设计模式:创建型设计模式即封装了具体生成对象的细节,仅暴露出生成对象的方法。只需向创建对象的方法提供参数,而不用自行实现判断的逻辑。UML图(图片来自网络):简单工厂模式提供了一个创建者类,暴露了一个工厂方法,用于根据接收的参数返回对应的具体产品类,所有产品类都实现了IProduct接口客户端只需调用Creator.factory()静态方法,并返回IPro...

2018-09-16 19:52:14 89

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除