java抽象工厂模式(Abstract Factory)-创建型
来源:互联网 发布:奥杜尔档案馆数据圆盘 编辑:程序博客网 时间:2024/06/05 12:50
意图
在客户端不必指定产品的具体类型的情况下,创建多个产品族中的一族产品。
产品族即一系列相关或相互依赖的产品组成的家族。
抽象工厂模式的结构
类图与角色
工厂接口(Factory):所有具体工厂必须实现的接口。为每种类型的产品至少定义一个工厂方法。
具体工厂(Concrete Factory):对Factory接口的实现。
产品接口(Product):所有具体产品必须实现的接口。每一种产品都定义一个产品接口。
具体产品(Concrete Product):对产品接口的实现。
示例
//产品接口 interface Engine{}//引擎interface Wheel{}//轮子//具体产品class ChinaEngine implements Engine{}class GermanyEngine implements Engine{}class ChinaWheel implements Wheel{}class AmericaWheel implements Wheel{}//工厂接口 interface Manufacturer{//制造商 public Engine getEngine(); public Wheel getWheel();}//具体工厂 class DZManufacturer implements Manufacturer{//大众汽车制造商 @Override public Engine getEngine(){ return new ChinaEngine(); } @Override public Wheel getWheel(){ return new ChinaWheel(); }}//具体工厂 class BMManufacturer implements Manufacturer{//宝马汽车制造商 @Override public Engine getEngine(){ return new GermanyEngine(); } @Override public Wheel getWheel(){ return new AmericaWheel(); }}
//客户端代码class test {public static void main (String[] args) throws java.lang.Exception{ Manufacturer manu=new DZManufacturer(); Car dz=new Car(); dz.setEngine(manu.getEngine()); dz.setWheel(manu.getWheel()); manu=new BMManufacturer(); System.out.println("大众汽车制造商生产的汽车:"+dz); Car bm=new Car(); bm.setEngine(manu.getEngine()); bm.setWheel(manu.getWheel()); System.out.println("宝马汽车制造商生产的汽车:"+bm);}}class Car { private Engine engine; private Wheel wheel; public Engine getEngine(){ return this.engine; } public void setEngine(Engine engine){ this.engine=engine; } public Wheel getWheel(){ return this.wheel; } public void setWheel(Wheel wheel){ this.wheel=wheel; } @Override public String toString(){ return "引擎:"+engine.getClass().getName()+"。轮胎:"+wheel.getClass().getName(); }}
抽象工厂适用场景
1、一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节。
2、这个系统的产品有多个产品族,而系统只消费其中某一族产品。
3、同属于同一族的产品必须一起适用,并且这一约束需要在系统的设计中体现出来。
4、系统提供了一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于实现。
0 0
- java抽象工厂模式(Abstract Factory)-创建型
- Abstract Factory抽象工厂(创建型模式)
- 创建型模式 ABSTRACT FACTORY---抽象工厂
- Abstract Factory 抽象工厂(创建型模式)
- 【创建型模式】abstract factory(抽象工厂)
- 【创建型模式】abstract factory(抽象工厂)
- 创建型-抽象工厂模式(abstract factory)
- 2. 抽象工厂模式(Abstract Factory) ---------- 创建型模式
- 创建型模式2:抽象工厂模式(Abstract Factory)
- 创建型模式:抽象工厂模式(Abstract Factory Pattern)
- 设计模式-创建型-抽象工厂模式(Abstract Factory)
- Abstract Factory模式(抽象工厂模式 创建型)
- Abstract Factory 抽象工厂(创建型模式)
- 3. Abstract Factory 抽象工厂(创建型模式)
- 笔记3:Abstract Factory 抽象工厂(创建型模式)
- 创建型模式:Abstract Factory(抽象工厂)
- ABSTRACT FACTORY(抽象工厂)—对象创建型模式
- abstract factory(抽象工厂) 对象创建型模式
- [Leetcode]118. Pascal's Triangle
- 使用 URLConnection提交请求
- 我最喜欢的9个 Python深度学习库
- Cadence基础知识2(环境搭建、原理图库制作、原理图绘制、快捷键)
- 实时监听输入框值变化的完美方案:oninput & onpropertychange
- java抽象工厂模式(Abstract Factory)-创建型
- UIGraphicsBeginImageContext与UIGraphicsBeginImageContextWithOptions的区别
- 杭电 1012 u Calculate e
- sitemesh2.4
- matlab图像剪裁命令imcrop()
- Hadoop安装
- Supervisor-进程管理入门
- AAA Java 远程通讯技术及原理分析(最齐全)
- 数组的全排列算法