Java结构型的几种模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java结构型的几种模式相关的知识,希望对你有一定的参考价值。

一、工厂模式的分类
      工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。

     工厂模式在《Java与模式》中分为三类:
     1)简单工厂模式(Simple Factory);又称为静态工厂方法模式
                                             GOF在《设计模式》中一般把简单工厂模式和工厂方法模式合为一类
     2)工厂方法模式(Factory Method):省去了静态属性,可以子类继承

     3)抽象工厂模式(Abstract Factory)
     
   简单工厂模式
      1) 工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java中它往往由一个具体类实现。

      2) 抽象产品角色:它一般是具体产品继承的父类或者实现的接口。在java中由接口或者抽象类来实现。

      3) 具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。   
      
   工厂方法模式  
      1)抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。在java中它由抽象类或者接口来实现。

      2)具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。

      3)抽象产品角色:它是具体产品继承的父类或者是实现的接口。在java中一般有抽象类或者接口来实现。

      4)具体产品角色:具体工厂角色所创建的对象就是此角色的实例。在java中由具体的类来实现。
      
   抽象工厂模式
     1)系统中有多个产品族,而系统一次只可能消费其中一族产品。
     2)同属于同一个产品族的产品以其使用。
   
   来看看抽象工厂模式的各个角色(和工厂方法的如出一辙):
     1)抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。在java中它由抽象类或者接口来实现。

     2)具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。在java中它由具体的类来实现。

     3)抽象产品角色:它是具体产品继承的父类或者是实现的接口。在java中一般有抽象类或者接口来实现。

     4)具体产品角色:具体工厂角色所创建的对象就是此角色的实例。在java中由具体的类来实现。   
     
  二、装饰模式和代理模式的区别
     1)都实现了基础对象的接口,在自身都保存着被代理/被装饰者的的对象引用
     2)装饰者模式的责任是扩展功能,代理模式是主要控制访问
     
    装饰者的定义:动态的将责任附加到被装饰者对象上,用于扩展功能上,比继承更加灵活,典型的如java IO设计即是装饰者模式的典型应用。
    代理模式定义:对其他对象进行代理,以控制被代理的对象访问,Spring为业务逻辑层方法生成的代理类,主要进行一些事物控制等。
 
  三、门面模式
     1)定义一个(或多个)具备所需接口的新类(门面类)
     2)新类门户使用原来的系统
     3) 客户使用门面类对象与原系统打交道
     
    门面模式的定义:提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使用子系统更容易使用。
         
          缺点:不符合开闭原则。所谓的开闭原则是软件工程里面一个最基本的原则:对扩展开放,对修改关闭。换句话说,你的系统可以提供新的功能模块而不必进行修改。  
    























































以上是关于Java结构型的几种模式的主要内容,如果未能解决你的问题,请参考以下文章

java常见的几种设计模式

Java 中的几种基本数据结构

java中常用到得设计模式有哪几种?

Java的几种循环结构

开发java中常用的几种数据类型

MYSQL中的几种循环结构