将多个工厂类进行抽象来构建抽象工厂模式
工厂模式主要是封装过程,注重结果,以及解耦合

主题接口

package factory.abs;/*** @author :  freedom* @Description :  不同颜色的主题接口* @Creation Date:  2019-11-17 7:57 上午*/
public interface ISkin {void display();}

主题

绿色主题
package factory.abs;/*** @author :  freedom* @Description :  绿色主题类* @Creation Date:  2019-11-17 8:00 上午*/
public class GreenSkin implements ISkin {@Overridepublic void display() {System.out.println("显示绿色主题");}
}
蓝色主题
package factory.abs;/*** @author :  freedom* @Description :  蓝色主题类* @Creation Date:  2019-11-17 7:59 上午*/
public class BlueSkin implements ISkin {@Overridepublic void display() {System.out.println("显示蓝色主题");}
}
灰色主题
package factory.abs;/*** @author :  freedom* @Description :  灰色主题类* @Creation Date:  2019-11-17 8:01 上午*/
public class GraySkin implements ISkin {@Overridepublic void display() {System.out.println("显示灰色主题");}
}

抽象主题工厂接口

package factory.abs;/*** @author :  freedom* @Description :  创建主题工厂接口* @Creation Date:  2019-11-17 8:21 上午*/
public interface ISkinFactory {/**** @return 创建主题*/ISkin createSkin();
}

主题工厂

绿色主题工厂
package factory.abs;/*** @author :  freedom* @Description :  生成绿色主题的工厂* @Creation Date:  2019-11-17 8:21 上午*/
public class GreenSkinFactory implements ISkinFactory {/*** @return 创建主题*/@Overridepublic ISkin createSkin() {return new GreenSkin();}
}
蓝色主题工厂
package factory.abs;/*** @author :  freedom* @Description :  生成蓝色主题的工厂* @Creation Date:  2019-11-17 8:23 上午*/
public class BlueSkinFactory implements ISkinFactory {/*** @return 创建主题*/@Overridepublic ISkin createSkin() {return new BlueSkin();}
}
灰色主题工厂
package factory.abs;/*** @author :  freedom* @Description :  生成灰色主题的工厂* @Creation Date:  2019-11-17 8:23 上午*/
public class GraySkinFactory implements ISkinFactory {/*** @return 创建主题*/@Overridepublic ISkin createSkin() {return new GraySkin();}
}

抽象工厂类

package factory.abs;/*** @author :  freedom* @Description :  主题抽象工厂类* @Creation Date:  2019-11-17 8:02 上午*/
public abstract class AbstractSkinFactory {protected abstract ISkin getSkin();//根据不同的输入显示不同的主题public ISkin getSkin(String skinName){if("GRAY".equalsIgnoreCase(skinName)){return  new GraySkinFactory().createSkin();}else if("GREEN".equalsIgnoreCase(skinName)){return new GreenSkinFactory().createSkin();}else if("BLUE".equalsIgnoreCase(skinName)){return new BlueSkinFactory().createSkin();}else{System.out.printf("主题正在制作中");return null;}}
}

默认工厂类

package factory.abs;/*** @author :  freedom* @Description :   默认生成绿色主题类* @Creation Date:  2019-11-17 8:06 上午*/
public class DefaultFactory extends AbstractSkinFactory {@Overrideprotected ISkin getSkin() {return new GreenSkinFactory().createSkin();}
}
package factory.abs;/*** @author :  freedom* @Description :   默认生成绿色主题类* @Creation Date:  2019-11-17 8:06 上午*/
public class DefaultFactory extends AbstractSkinFactory {@Overrideprotected ISkin getSkin() {return new GreenSkinFactory().createSkin();}
}

测试抽象主题工厂

package factory.abs;/*** @author :  freedom* @Description :  抽象工厂测试类* @Creation Date:  2019-11-17 8:06 上午*/
public class AbstractFactoryTest {public static void main(String[] args) {//创建默认工厂DefaultFactory defaultFactory = new DefaultFactory();//默认工厂默认显示绿色主题defaultFactory.getSkin().display();//调用蓝色主题defaultFactory.getSkin("BLUE").display();}
}

测试结果

工厂模式之抽象工厂模式相关推荐

  1. 工厂方法模式和抽象工厂模式

    工厂方法模式和抽象工厂模式 工厂方法模式 抽象工厂模式 总结: 工厂方法模式 #include <string> #include <iostream>// Abstract ...

  2. 设计模式之工厂类模式总结对比、简单工厂模式、工厂方法模式、抽象工厂模式、带反射的工厂模式、例子代码分析、最详细

    1. 题目 假设某公司同时用SqlServer.MySql数据库,即会切换两数据库(不同数据库的sql语句有些许差异),同时,两数据库里均有对Users.Departments表的操作(sql代码不一 ...

  3. Java设计模式(工厂模式>抽象工厂模式和原型模式)

    Java设计模式Ⅱ 1.工厂模式 1.1 简单工厂模式 1.2 工厂方法模式 2.抽象工厂模式 3.总结 4.原型模式 4.1 原型模式 4.2 浅拷贝 4.3 深拷贝 5.建造者模式 1.工厂模式 ...

  4. 021 设计模式之工厂方法模式,抽象工厂模式的区别

    简单工厂模式,工厂方法模式和抽象工厂模式的异同 简单工厂模式,工厂方法模式和抽象工厂模式都是属于创建型设计模式,这三种创建型模式都不需要知道具体类.我们掌握一种思想,就是在创建一个对象时,需要把容易发 ...

  5. 设计模式之工厂模式和抽象工厂

    设计模式分类 通常来说设计模式分为三大类: 创建型模式,共 5 种:工厂模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共 7 种:适配器模式.装饰器模式.代理模式.外观模式.桥接模 ...

  6. [设计模式篇]工厂模式和抽象工厂模式

    最近在看Head First的Design Pattern,想想去年候捷来学校给我们讲Design Pattern,但当时水平太弱根本听不懂,今年想趁机再好好学一波,候捷反而不来了,哎,人生就是这样, ...

  7. java抽象工厂模式_Java 抽象工厂模式

    Java设计模式 - 抽象工厂模式 抽象工厂模式是另一个创建模式. 抽象工厂模式,也称为工厂的工厂,有一个工厂创建其他工厂. 当使用抽象工厂模式时,我们首先使用超级工厂创建工厂,然后使用创建的工厂创建 ...

  8. 设计模式理解:工厂模式,抽象工厂,原型方法

    工厂模式.抽象工厂.原型方法都是对象创建型模式.工厂模式的目的是利用抽象类去动态地创建对象:抽象工厂模式是利用抽象类动态地创建一系列的对象:而原型方法是通过克隆(深拷贝)地形式创建出对象 ,再去操作新 ...

  9. 回顾游戏中的设计模式:策略模式vs抽象工厂

    最近有时间看看设计模式方面的书,好多东西时间久了不看就变得生疏起来, 在这里会抽出时间把自己在工作中使用过的设计模式做下总结. 刚才在看到别人说,简单工厂模式是"通过提供单独的一个类,来实现 ...

  10. 创建型模式:抽象工厂

    个人博客原文: 创建型模式:抽象工厂 五大创建型模式之三:抽象工厂. 简介 姓名 :抽象工厂 英文名 :Abstract Factory Pattern 价值观 :不管你有多少产品,给我就是了 个人介 ...

最新文章

  1. J2ee分布式框架--技术介绍文档
  2. 第四节、逆矩阵与转置矩阵
  3. 京东商品详情页碎碎念
  4. c++用new求数组中n个数的和_在C++中实现任意大小数组的定义方法
  5. Linux ${}表达式详解
  6. pandas将字符串转换成时间_pandas入门: 时间字符串转换为年月日
  7. 深入浅出MySQL数据库(一)
  8. 旧服务器如何虚拟化,4个步骤教你如何重复利用旧虚拟化主机
  9. 19. 镜像二叉树(C++版本)
  10. SolidWorks、inventor、UG...我该学哪个?主流三维机械设计软件对比
  11. 日语N5名词整理:单词按发音汇总
  12. Matlab中xtickformat函数
  13. python中def func是什么意思_python中的函数def和函数的参数
  14. WIN7 安装使用远程服务器管理工具-如DHCP、AD域、HyperV、远程桌面
  15. 摄像头ip分享论坛_谁的SIP软交换呼叫中心终端摄像头正在公网裸奔
  16. WGCLOUD和ZABBIX有什么不一样
  17. 台式计算机如何双屏显示,一个电脑主机怎样接两个显示器_一个电脑连接两个显示器如何操作-win7之家...
  18. html5 打气球小游戏,在javascript+css3中如何实现打气球小游戏
  19. Coca:对比字幕是图像-文本基础模型
  20. Unity学习 — VideoPlayer控制视频播放、暂停、上下选择播放!

热门文章

  1. 个人电子邮箱格式大全,邮箱的正确格式是什么?
  2. 喜迎进博会 欢聚环球港 共享消费城——2021环球商业年会暨城市综合体论坛圆满举行
  3. 开学季征文 | 一位开发实习生的真情流露
  4. 学习笔记4--自动驾驶汽车感知系统
  5. 2019智能网联汽车技术大会 | 感知+计算——解决智能网联汽车感知困境的必然趋势...
  6. 知识库管理-运维管理
  7. 2024考研《艺术学概论》彭吉象|复习笔记(下篇)(7-12章)
  8. 再见,2018俄罗斯世界杯!
  9. 计算机等级保护 备案,信息安全等级保护备案实施细则
  10. 四旋翼无人机PID调节(无数次实验总结经验和理论支持)