一.概念
抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确知道具体类。
二.实例分析
CPU
- package com.zzy.abstractFactory;
- /**
- * CPU接口
- * @author eason
- *
- */
- public interface CPU {
- public void work();
- }
WDCPU/SamSungCPU/SeagateCPU类似,只贴出一个
- package com.zzy.abstractFactory;
- /**
- * 西数CPU
- * @author eason
- *
- */
- public class WDCPU implements CPU{
- @Override
- public void work() {
- System.out.println("西数CPU is working...");
- }
- }
Disk
- package com.zzy.abstractFactory;
- /**
- * CPU接口
- * @author eason
- *
- */
- public interface Disk {
- public void write();
- }
WDDisk/SamSungDisk/SeagateDisk类似,只贴出一个
- package com.zzy.abstractFactory;
- public class WDDisk implements Disk {
- @Override
- public void write() {
- System.out.println("西数硬盘 is working...");
- }
- }
AbstractFactory
- package com.zzy.abstractFactory;
- /**
- * 抽象工厂接口
- * @author eason
- *
- */
- public interface AbstractFactory {
- public CPU createCPU();
- public Disk createDisk();
- }
WDFactory/SamSungFactory/SamSungFactory类似,只贴出一个
- package com.zzy.abstractFactory;
- /**
- * 三星工厂
- * @author eason
- *
- */
- public class WDFactory implements AbstractFactory{
- @Override
- public CPU createCPU() {
- return new WDCPU();
- }
- @Override
- public Disk createDisk() {
- return new SamSungDisk();
- }
- }
TestAbstractFactory
- package com.zzy.abstractFactory;
- /**
- * 测试类
- * @author eason
- *
- */
- public class TestAbstractFactory {
- public static void main(String[] args) {
- //三星工厂
- AbstractFactory factory = new WDFactory();
- //三星工厂生产的CPU
- CPU cpu = factory.createCPU();
- //三星工厂生产的硬盘
- Disk disk = factory.createDisk();
- cpu.work();
- disk.write();
- }
- }
三.抽象工厂模式的产品等级与产品族
- 抽象工厂:用来生产不同产品族的全部产品。
- 抽象工厂是应对产品族概念的,所以抽象工厂接口要能生产同一产品族中的所有产品。
四.简单工厂,工厂方法,抽象工厂的联系去区别
- 从类的角度
简单工厂:只有一个具体工厂类来创建一种基类的不同派生类。
工厂方法:有多个派生于一个基类的具体工厂类,每个工厂类只生产一种基类的一个派生类。
抽象工厂:只有一个工厂基类,其具体派生类生产相关基类的各一个派生类。
- 从产品等级与产品族的角度
简单工厂:生产同一等级结构中的任意产品。
工厂方法:生产同一等级结构中的固定产品。
抽象工厂:生产不同产品族的全部产品。
相关推荐
ZY Player APP :sparkles:特性 :hamburger:视频源支持自定义,支持链接引入 :hot_dog:播放历史,自动取消历史进度 :sandwich:支持搜索功能,搜索结果图片显示 :popcorn:支持收藏夹功能 :fried_shrimp:支持青...
51单片机控制的循迹避障小车,支持红外遥控,可以实现前进后退左右和循迹切换
智能小车的相关功能例程,并且有程序的注释,
ZY-TP21便捷式打印机驱动是一款嵌入式微型打印机,这款打印机体积小,重量轻,噪音低,易集成,操作简单,可靠性强,这里介绍的正是针对这款打印机的驱动,ZY-TP21便捷式打印机驱动,有需要的朋友们快来下载吧。...
该套设备采用ZY6400-23.5/45型液压支架,最大采高达4.5 m。由于十二矿井下主要巷道断面较小,支架必须解体入井安装,回采结束后支架回撤又面临一个新课题。针对这个难题,十二矿改革回收工艺,采取相应的安全措施,顺利地...
ZY3-01星SC产品命名规范20160217.pdf
VMware Workstation7.1.2 build-301548汉化包 ...-------------------------------------------- ...VMware Workstation7.1.2 VM7.1.2注册机VM7.1.2汉化包 VM7.1.2序列号 VM7.1.2汉化包VMware Workstation7.1.2 VM7.1.2...
循迹小车的单片机程序。仅供参考大家互相学习,共同进步本次上传日志本次上传日志本次上传日志本次上传日志要求上传您自己觉得好的资料本次上传日志
ZY-Player-Setup-2.6.4.exe
不用换找资源,本身自带资源搜索的播放器
RF-SJ-ZY-04-F08 采暖通风设计图纸审查标准及要点(1).zip
程序设计语言ZY1906-大作业.7z
吉林中易CMS【ZY-CMS】是一款开源免费asp内容管理系统,全站CSS div布局,为用户的修改提供方便,网站内容的每一个角落都可以在后台予以管理,是一套非常适合用做系统建站或者进行二次开发的程序核心。吉林中易CMS...
RF-YX-ZY-07-F02 设计通知.zip
RF-SJ-ZY-06-F02 设计变更指令单.zip
RF-SJ-ZY-04-F01 设计评审表.zip
RF-SJ-ZY-02-F02 设计邀请函.zip
ZY-Player-Setup-2.6.1.exe