java设计模式之工厂模式

来源:互联网 发布:做淘宝要先学美工吗 编辑:程序博客网 时间:2024/05/22 04:27


1.工厂模式概念:
负责将【大量】拥有【共同接口】的类实例化,它可以【动态的决定】将哪一个类实例化,不必事先知道每次要实例化哪个类。
2.工厂模式几种形态:
(a).简单工厂模式(Simple Factory Pattern):又称为静态工厂方法模式,不需要创建实例
(b).工厂方法模式:又称多态性工厂模式或虚拟构造器模式
(c).抽象工厂模式:又称工具箱模式
###############################################################
3.简单工厂模式
是类的创建模式,其中包含三个重要的角色
(1).工厂类角色:核心角色,含有与应用紧密相关的业务逻辑,工厂类在客户端的直接调用下创建产品对象
(2).抽象产品角色:所有产品共同的接口,由接口实现
(3).具体产品角色:创建出的产品,由一个具体类来实现
4.简单工厂的优劣
(1).优势:
模式的核心是工厂类,这个类包含了必要的判断逻辑,可以决定在什么时候创建哪一个产品的实例;
客户端可以免除直接创建产品对象的责任,而仅仅消费产品,实现了对责任的分割
(2).局限性:
对于新增功能必将导致工厂类的修改,这样就违背了OCP原则
工厂类集中了所有类的创建逻辑,形成了了一个全能类,一旦该类出现问题,会影响整个系统的崩溃
#################################################################
5.工厂方法模式
5.1意义:定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中

5.2适用性:
5.2.1.当一个类不知道它必须创建的对象的类的时候
5.2.2.当一个类希望由它的子类来指定它所创建的对象的时候
5.2.3.当类创建对象的职责委托给多个帮助子类中的一个,并且希望将哪一个帮助子类是代理者这一信息局部化的时候

5.3重要角色
5.3.1抽象工厂角色:工厂方法的核心,它是与应用程序无关的。任何在模式中创建的对象工厂必须实现这个接口,实际的系统中,这个角色由一个抽象类和接口来实现
5.3.2具体工厂角色:实现了工厂接口的具体类,具体工厂角色含有与应用密切相关的逻辑,并且受到应用程序的调用以创建新产品对象,在实际系统中,这个角色由具体类实现
5.3.3抽象产品角色:工厂方法模式所创建的对象的超类型,也就是所有产品共同的父类或共同拥有的接口。在实际系统中,该角色由抽象类或接口来实现
5.3.4具体产品角色:实现了抽象产品角色所声明的接口,工厂方法模式所创建的每一个对象都是某个具体产品角色的实例,在实际系统中,该角色由具体类来实现
#################################################################
6.抽象工厂
6.1概念:可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,创建多个产品族中的对象
6.2抽象工厂模式的适用性:
一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节,这对于所有形态的工厂模式都是重要的
一个系统的产品多个产品族,但系统只消费其中某一族的产品
当要强调一系列相关的产品对象的设计以便进行联合使用时
系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于实现



0 0
原创粉丝点击