几个工厂模式和门面模式

来源:互联网 发布:大气层消失 知乎 编辑:程序博客网 时间:2024/05/29 15:07

设计模式中最搞的就是简单工厂模式、抽象工厂模式、工厂方法·和门面模式
先看一下他们的定义吧:

简单工厂:

定义 :

  提供一个创建对象实例的功能,而无需关心其具体实现。被创建实例的类型可以是接口、抽象类,也可以是具体的类。

结构与说明:

Api:定义客户需要的功能接口
Impl : 具体实现Api的实现类,可能有多个
Factory : 工厂,根据参数选择合适的实现类来创建Api接口对象
Client : 客户端,通过Factory获取Api接口对象,然后面向Api接口编程

工厂方法:

定义 :

  定义一个创建对象的接口,让子类决定实例化哪一个类,Factory Method使得一个类的实例化延迟到其子类

结构与说明:

Product:定义工厂方法所创建的对象的接口,也就是实际需要使用的对象的接口
ConcreteProduct : 具体的Product接口的实现对象
Creator : 创建器,申明工厂方法,工厂方法通常会返回一个Product类型的实例。
ConcreteCreator : 具体的创建器对象,覆盖工厂方法,返回具体的Product实例
这个设计模式是不是和spring的DI很像呢?(^&^

抽象工厂:

定义 :

  提供一个创建一系列相关或相互依赖对象的接口,而无需制定他们具体的类

结构与说明:

AbstractFactory : 抽象工厂,定义创建一系列产品对象的操作的接口
ConcreteFactory : 具体的工厂,实现抽象工厂定义的方法,具体实现一系列产品对象的创建
AbstractProduct : 定义一类产品对象的接口
ConcreteProduct : 具体的产品对象
Client : 客户端,主要使用抽象工厂来获取一系列所需要的产品对象,然后面向这些产品接口编程,以实现所需要的功能。

门面/外观模式:

定义 :

  为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使的这一子系统更加容易使用。

例子 :

邮局相当于一个门面或外观,具体的盖邮戳、运信、送信等一系列相关过程则无需关心;银行的窗口也是一个好例子,窗口提供了很多服务,但是每个服务只需要客户填写基本信息和身份认证,其他的详细关联业务操作则由窗口内的营业员来完成。通过门面模式,简化了客户端的操作

总结

通过上面的对比,相信各位应该很清楚明白了。

No Final is final
By  Xu.j.h
0 0
原创粉丝点击