Android的设计模式-抽象工厂模式
来源:互联网 发布:台达dop触摸屏编程软件 编辑:程序博客网 时间:2024/06/18 18:10
前言
Android的设计模式系列文章介绍,欢迎关注,持续更新中:
Android的设计模式-设计模式的六大原则
创建型模式:
Android的设计模式-单例模式
Android的设计模式-建造者模式
Android的设计模式-工厂方法模式
Android的设计模式-简单工厂模式
Android的设计模式-抽象工厂模式
Android的设计模式-原型模式
行为型模式:
Android的设计模式-策略模式
Android的设计模式-状态模式
Android的设计模式-责任链模式
Android的设计模式-观察者模式
1.定义
为创建一组相关或者相互依赖的对象提供一个接口,而无需指定它们的具体类。
2.介绍
- 抽象工厂模式属于创建型模式。
- 工厂方法模式每个工厂只能创建一种类型的产品,而抽象工厂模式则能够创建多种类型的产品。
- 例如:硬盘工厂只生产硬盘这种产品,而电脑工厂则组合不同的硬盘、内存、CPU等生产出电脑来。
3.UML类图
3.1 角色说明:
- Product(抽象产品类):定义产品的公共接口。
- ConcreteProduct(具体产品类):定义产品的具体对象,实现抽象产品类中的接口。
- Factory(抽象工厂类):定义工厂中用来创建不同产品的方法。
- ConcreteFactory(具体工厂类):实现抽象工厂中定义的创建产品的方。
4.实现
4.1 创建抽象产品类,定义公共接口:
//抽象产品类-- CPU public abstract class CPU { public abstract void showCPU(); } //抽象产品类-- 内存 public abstract class Memory { public abstract void showMemory(); } //抽象产品类-- 硬盘 public abstract class HD { public abstract void showHD(); }
4.2 创建具体产品类,继承Product类:
//具体产品类-- Intet CPU public class IntelCPU extends CPU { @Override public void showCPU() { System.out.println("Intet CPU"); } } //具体产品类-- AMD CPU public class AmdCPU extends CPU { @Override public void showCPU() { System.out.println("AMD CPU"); } } //具体产品类-- 三星 内存 public class SamsungMemory extends Memory { @Override public void showMemory() { System.out.println("三星 内存"); } } //具体产品类-- 金士顿 内存 public class KingstonMemory extends Memory { @Override public void showMemory() { System.out.println("金士顿 内存"); } } //具体产品类-- 希捷 硬盘 public class SeagateHD extends HD { @Override public void showHD() { System.out.println("希捷 硬盘"); } } //具体产品类-- 西部数据 硬盘 public class WdHD extends HD { @Override public void showHD() { System.out.println("西部数据 硬盘"); } }
4.3 创建抽象工厂类,定义工厂中用来创建不同产品的方法:
//抽象工厂类,电脑工厂类 public abstract class ComputerFactory { public abstract CPU createCPU(); public abstract Memory createMemory(); public abstract HD createHD(); }
4.4 创建具体工厂类,继承Factory类:
//具体工厂类--联想电脑 public class LenovoComputerFactory extends ComputerFactory { @Override public CPU createCPU() { return new IntelCPU(); } @Override public Memory createMemory() { return new SamsungMemory(); } @Override public HD createHD() { return new SeagateHD(); } } //具体工厂类--华硕电脑 public class AsusComputerFactory extends ComputerFactory { @Override public CPU createCPU() { return new AmdCPU(); } @Override public Memory createMemory() { return new KingstonMemory(); } @Override public HD createHD() { return new WdHD(); } } //具体工厂类--惠普电脑 public class HpComputerFactory extends ComputerFactory { @Override public CPU createCPU() { return new IntelCPU(); } @Override public Memory createMemory() { return new KingstonMemory(); } @Override public HD createHD() { return new WdHD(); } }
4.5 测试方法:
public void test() { System.out.println("--------------------生产联想电脑-----------------------"); ComputerFactory lenovoComputerFactory = new LenovoComputerFactory(); lenovoComputerFactory.createCPU().showCPU(); lenovoComputerFactory.createMemory().showMemory(); lenovoComputerFactory.createHD().showHD(); System.out.println("--------------------生产华硕电脑-----------------------"); ComputerFactory asusComputerFactory = new AsusComputerFactory(); asusComputerFactory.createCPU().showCPU(); asusComputerFactory.createMemory().showMemory(); asusComputerFactory.createHD().showHD(); System.out.println("--------------------生产惠普电脑-----------------------"); ComputerFactory hpComputerFactory = new HpComputerFactory(); hpComputerFactory.createCPU().showCPU(); hpComputerFactory.createMemory().showMemory(); hpComputerFactory.createHD().showHD(); }
输出结果为:
--------------------生产联想电脑-----------------------Intet CPU三星 内存希捷 硬盘--------------------生产华硕电脑-----------------------AMD CPU金士顿 内存西部数据 硬盘--------------------生产惠普电脑-----------------------Intet CPU金士顿 内存西部数据 硬盘
5.应用场景
- 生产多个产品组合的对象时。
6.优点
- 代码解耦,创建实例的工作与使用实例的工作分开,使用者不必关心类对象如何创建。
7.缺点
- 如果增加新的产品,则修改抽象工厂和所有的具体工厂,违反了开放封闭原则
8.工厂方法模式与抽象工厂模式比较
- 在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法具有唯一性。
- 抽象工厂模式则可以提供多个产品对象,而不是单一的产品对象。
相关文章阅读
Android的设计模式-设计模式的六大原则
创建型模式:
Android的设计模式-单例模式
Android的设计模式-建造者模式
Android的设计模式-工厂方法模式
Android的设计模式-简单工厂模式
Android的设计模式-抽象工厂模式
Android的设计模式-原型模式
行为型模式:
Android的设计模式-策略模式
Android的设计模式-状态模式
Android的设计模式-责任链模式
Android的设计模式-观察者模式
阅读全文
0 0
- Android的设计模式-抽象工厂模式
- android 设计模式-抽象工厂
- android设计模式之抽象工厂模式
- Android中的设计模式-抽象工厂模式
- Android 设计模式 笔记 - 抽象工厂模式
- Android设计模式-抽象工厂模式
- Android设计模式---工厂方法模式和抽象工厂模式
- 抽象工厂设计模式
- 设计模式-----抽象工厂
- 抽象工厂设计模式
- 抽象工厂设计模式
- 抽象工厂设计模式
- 设计模式 抽象工厂
- 设计模式--抽象工厂
- 设计模式--抽象工厂
- 设计模式 抽象工厂
- 设计模式-抽象工厂
- 设计模式-> 抽象工厂
- OSX与iOS系统架构
- windows下python环境搭建教程
- Android--图片.9介绍与制作过程
- Errors occurred during the build. Errors running builder 'DeploymentBuilder' on project 'drp2.8'. ja
- 在部署服务,启动Tomcat的时候,报错“前言中不允许有内容”
- Android的设计模式-抽象工厂模式
- 二叉树前序、中序、后序遍历非递归写法的透彻解析
- idea spring mvc 重定向错误
- Python docx转PDF
- Spring 自动装载
- Python中 sys.argv[]的用法简明解释
- 【pandas】[1] Series 入门(创建和增删改查)
- RedHat linux 下kdump的配置
- HttpClients多文件上传连接 WebODM 中创建任务接口的方法