浅谈Java设计模式系列0x09---外观模式

浅谈Java设计模式系列0x06—适配器模式
浅谈Java设计模式系列0x07—桥接模式
浅谈Java设计模式系列0x08—装饰器模式

本次我给大家介绍的同样是一种对象结构型模式—–外观模式;

外观模式是什么鬼

外观模式为子系统的一组接口提供一个统一的高层接口,使得子系统更容易使用,这是维基百科上的定义;
但这定义根本看不懂有木有,所以我就以我的理解给大家解释一下外观模式是什么鬼;
我们先看一下下面这张图片:
外观模式
很明显当我们要自己泡咖啡的时候,我们要自己烧开水,自己冲咖啡;
但当我们要到Starbucks喝咖啡时星巴克里的服务员会帮我们做所有泡咖啡的事情,我们只有Oder一杯咖啡便可轻松的等待咖啡的到来;
这里的Starbucks就是我们为子系统提供的一个统一的高层接口,这里可以很清晰的看到外观模式的好处;

Read More

浅谈Java设计模式系列0x08---装饰器模式

浅谈Java设计模式系列0x06—适配器模式
浅谈Java设计模式系列0x07—桥接模式

上次我给大家介绍了桥接模式,它是一个非常实用的设计模式;
本次再给大家介绍一个结构型模式—–装饰器模式;

装饰器是什么鬼

就像装饰我们的汽车,房间一样,在设计模式中,装饰器模式就是允许我们为现有的对象添加新的功能或特性,而不必去修改原有的代码;
装饰器模式是通过组合的方式实现对象功能或特性的扩展,这相比继承更加的灵活;

模式结构

  • 抽象构件(Component) : 它是具体构件(ConcreteComponent)抽象装饰类(Decorator)的共同父类,声明了具体构件中实现的业务方法;
  • 具体构件(ConcreteComponent) : 它是抽象构件类(Component)的子类,定义具体的构件对象,并实现抽象构件类中定义的方法;
  • 抽象装饰类(Decorator) : 它也是抽象构件类(Component)的子类,用于给具体构件增加职责,具体职责在其子类中实现;
  • 具体装饰类(ConcreteDecorator) : 它是抽象装饰类(Decorator)的子类,负责向构件添加新的职责,扩充对象的行为;

    Read More

浅谈Java设计模式系列0x07---桥接模式

浅谈Java设计模式系列0x06—适配器模式
本次我来继续给大家介绍结构型模式—-桥接模式

桥接模式

桥接模式是让具体实现与抽象分离,使他们可以各自独立变化的一种设计模式;
桥接模式通过将类的静态继承关系转换为动态的对象组合关系,以此来实现系统的解耦,这种关联的关系就像是连接各部分的桥;

模式结构

  • 抽象类(Abstraction) : 用于定义抽象类的接口,其中包含一个 实现类接口(Implementor) 的引用;
  • 扩充抽象类(RefinedAbstraction) : 扩充以及实现由 抽象类(Abstraction) 定义的接口的具体类,可以调用 实现类接口(Implementor) 中定义的业务方法;
  • 实现类接口(Implementor) : 定义实现类的接口;
  • 具体实现类(ConcreteImplementor) : 实现Implementor接口;

    Read More

浅谈Java设计模式系列0x06---适配器模式

前面我所介绍的都是创建型的设计模式,本篇开始我来给大家介绍结构型的设计模式;
首先我要介绍的第一个结构型的设计模式就是 适配器模式

适配器模式

适配器就是一个可以将原本并不兼容的接口能够在一起工作,而适配器模式就是为了解决这个问题;
适配器模式通过将一个不兼容的接口转换成客户所希望的接口,由此客户便可以使用相应的服务而无需修改现有的接口;
适配器模式有两种实现的方法,一种是类适配器,一种是对象适配器;

模式结构

目标抽象类(Target) :定义客户所使用的方法接口;
适配器类(Adapter) :完成从适配者到目标接口的转换适配;
适配者类(Adaptee) :定义需要适配的接口;
客户类(Client) :与符合目标接口的对象进行合作;

Read More

浅谈Java设计模式系列0x05---建造者模式

浅谈Java设计模式系列0x00
浅谈Java设计模式系列0x01—单例模式
浅谈Java设计模式系列0x02—简单工厂模式
浅谈Java设计模式系列0x03—工厂方法模式
浅谈Java设计模式系列0x04—抽象工厂模式

我们前面讲的设计模式都是创建型的模式,这次要讲的也是一种创建型的模式—–建造者模式;

建造者模式

建造者模式是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示;
建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节;

模式结构

抽象建造者(Builder):

  • 为创建一个Product对象的各个部件指定的抽象接口;

具体建造者(ConcreteBuilder):

  • 实现Builder的接口以构造和装配该产品的各个部件;
  • 定义并明确它所创建的表示;
  • 提供一个检索产品的接口;

指挥者(Director):

  • 构造一个使用Builder接口的对象;

产品角色(Product):

  • 表示被构造的复杂对象,ConcreteBuilder创建该产品的内部表示并定义它的装配过程;
  • 包含定义组成部件的类,包括将这些部件装配成最终产品的接口

    Read More