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结构型的几种模式的主要内容,如果未能解决你的问题,请参考以下文章