(3)抽象工厂模式

简介: 一:抽象工厂模式的优点          --->抽象工厂模式是对象的创建模式,它是工厂方法模式的进一步推广。       --->假设一个子系统需要一些产品对象,而这些产品又属于一个以上的产品等级结构。

一:抽象工厂模式的优点

          --->抽象工厂模式是对象的创建模式,它是工厂方法模式的进一步推广。

       --->假设一个子系统需要一些产品对象,而这些产品又属于一个以上的产品等级结构。那么为了将消费这些产品对象的责任和创建这些产品对象的责任分割开 来,可以引进抽象工厂模式。这样的话,消费产品的一方不需要直接参与产品的创建工作,而只需要向一个公用的工厂接口请求所需要的产品。

       --->通过使用抽象工厂模式,可以处理具有相同(或者相似)等级结构中的多个产品族中的产品对象的创建问题。

二:抽象工厂模式的缺点

  --->


三:应用场景

        --->/**
 * 抽象工厂
 * @author sxf
 * 产品等级概念:intel的cpu 和amd的cpu是一个产品等级的。
 *                                                  intel的主板 和amd的cpu是一个产品等级的。
 *
 * 产品族的概念:intel的cpu 和主办 是一个产品族的
 *                                                  amd的cpu 和主板 是一个产品族的。
 *
 * 简单工厂模式:[纵向划分]
 *                            (1)面对的生成同一个等级的不同产品。比如:传入不同参数,生成intel的cpu或是amd的cpu
 *                            (2)只有一个核心工厂类,判断比较多,业务复杂,扩展改变核心类,麻烦。
 *
 * 工厂方法模式:[纵向划分]
 *                                (1)面对的生成同一个等级的不同产品。
 *                                (2)一个产品有一个自己的工厂类。新增加一个产品,就多一个具体的工厂类。
 * (3)产品单一,属于一个等级的产品
 *
 * 抽象工厂模式:[横向划分]
 *                                (1)面对的生成同一个族的产品
 *                                (2)一个产品族有一个自己的工厂类。
 *  (3)intel的工厂:生产cpu,主板,内存。amd的工厂:生产cpu,主板,内存
 *
 */

四:抽象工厂模式的角色演变



 


五:抽象工厂模式的代码示例

[1]抽象工厂

 1 package com.yeepay.sxf.interfaces;
 2 /**
 3  * 抽象工厂
 4  * @author sxf
 5  *  产品等级概念:intel的cpu 和amd的cpu是一个产品等级的。
 6  *                           intel的主板 和amd的cpu是一个产品等级的。
 7  * 
 8  * 产品族的概念:intel的cpu 和主办 是一个产品族的
 9  *                           amd的cpu 和主板 是一个产品族的。
10  * 
11  * 简单工厂模式:[纵向划分]
12  *                (1)面对的生成同一个等级的不同产品。比如:传入不同参数,生成intel的cpu或是amd的cpu
13  *                (2)只有一个核心工厂类,判断比较多,业务复杂,扩展改变核心类,麻烦。
14  * 
15  * 工厂方法模式:[纵向划分]
16  *                 (1)面对的生成同一个等级的不同产品。
17  *                 (2)一个产品有一个自己的工厂类。新增加一个产品,就多一个具体的工厂类。
18  * 
19  * 抽象工厂模式:[横向划分]
20  *                 (1)面对的生成同一个族的产品
21  *                 (2)一个产品族有一个自己的工厂类。intel的工厂:生产cpu,主板,内存。amd的工厂:生产cpu,主板,内存
22  *
23   */
24 public interface AbstartFactoryForGroup {
25     /**
26      * 创建cpu的部门
27      * @param cpu
28      * @return
29      */
30     public Cpu create(String cpu);
31     /**
32      * 创建主板的部门
33      * @param cpu
34      * @return
35      */
36     public ZhuBan create(Cpu cpu);
37 }
View Code

[2]不同的工厂

 1 package com.yeepay.sxf.interfaces.impl;
 2 
 3 import com.yeepay.sxf.interfaces.AbstartFactoryForGroup;
 4 import com.yeepay.sxf.interfaces.Cpu;
 5 import com.yeepay.sxf.interfaces.ZhuBan;
 6 
 7 /**
 8  * intel的工厂
 9  * @author sxf
10  *
11  */
12 public class IntelFactory implements AbstartFactoryForGroup{
13     /**
14      * 创建cpu
15      */
16     @Override
17     public Cpu create(String cpu) {
18         // TODO Auto-generated method stub
19         return null;
20     }
21     /**
22      * 创建主板
23      */
24     @Override
25     public ZhuBan create(Cpu cpu) {
26         // TODO Auto-generated method stub
27         return null;
28     }
29 }
30 
31 
32 package com.yeepay.sxf.interfaces.impl;
33 
34 import com.yeepay.sxf.interfaces.AbstartFactoryForGroup;
35 import com.yeepay.sxf.interfaces.Cpu;
36 import com.yeepay.sxf.interfaces.ZhuBan;
37 /**
38  * AMD的工厂
39  * @author sxf
40  *
41  */
42 public class AmdFactory implements AbstartFactoryForGroup{
43 
44     @Override
45     public Cpu create(String cpu) {
46         // 创建其cpu的实现
47         return null;
48     }
49 
50     @Override
51     public ZhuBan create(Cpu cpu) {
52         //创建其主板的实现
53         return null;
54     }
55 
56     
57 }
View Code

[3]产品接口

 1 package com.yeepay.sxf.interfaces;
 2 /**
 3  * cpu接口
 4  * @author sxf
 5  *
 6  */
 7 public interface Cpu {
 8         public String readNeicun(String neicun);
 9 }
10 
11 
12 package com.yeepay.sxf.interfaces;
13 /**
14  * 主板接口
15  * @author sxf
16  *
17  */
18 public interface ZhuBan {
19     public String readCpu(Cpu cpu);
20 }
View Code

 

相关文章
|
8天前
|
设计模式
工厂模式与抽象工厂模式
​ 如有错误或有补充,以及任何的改进意见,请在评论区留下您的高见 工厂模式 工厂模式是一种创建型设计模式。在工厂模式中,类的实例化过程通常是通过一个专门的工厂类来完成的,而不是直接在客户端代码中进行的。这样可以提供更好的封装,使得客户端代码与具体产品的实现解耦,增加代码的灵活性和可维护性。 优点 封装性:客户端代码不再需要知道所创建对象的详细信息,只需要与工厂接口进行交互即可。 灵活性:工厂模式使得系统更加灵活,可以在不修改客户端代码的情况下更换或添加新产品。 可扩展性:通过使用工厂模式,当需要添加新产品时,只需要扩展工厂类,而不需要修改客户端代码。 基本结构 抽象产品(Abstra
17 0
|
14天前
|
Java API 数据库
工厂方法模式
工厂方法模式
20 0
|
8月前
|
设计模式
2023-6-11-第二式抽象工厂模式
2023-6-11-第二式抽象工厂模式
46 0
|
8月前
|
设计模式 C++
2023-6-10-第一式工厂方法模式
2023-6-10-第一式工厂方法模式
52 0
|
7月前
浅谈抽象工厂模式
浅谈抽象工厂模式
|
7月前
浅谈工厂方法模式
浅谈工厂方法模式
|
9月前
|
设计模式 算法 搜索推荐
工厂方法模式的两个极端
概念:是一种常用的对象创建型设计模式,此模式的核心精神是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期维护拓展的目的。
|
9月前
|
设计模式
工厂方法模式详细介绍
工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它提供了一种将对象的创建逻辑封装在工厂类中的方式,使得客户端代码无需直接依赖具体的类来创建对象。
75 0
|
10月前
|
设计模式 监控 uml
剖析工厂方法模式、从开电脑店开始
工厂类负责把实例化类时,复杂的过程透明化,同时避免大量实例化类的重复代码的出现。
剖析工厂方法模式、从开电脑店开始
|
XML 存储 JSON
抽象工厂模式
抽象工厂模式

热门文章

最新文章