抽象工厂模式
来源:互联网 发布:算日子的软件 编辑:程序博客网 时间:2024/05/28 06:08
定义
起源与以前对不同操作系统的图形化解决方案,如不同操作系统的按钮和文本框控件其实现不同,展示效果也不一样,对于每一个操作系统,其本身就构成一个产品类,而按钮与文本框控件也构成一个类,两种产品类两种变化,各自有自己的特性。
魏传建一组相关或者是互相依赖的对象提供统一接口,而不需要指定它们的具体类。
使用场景
Android、iOS、Windows Phone下都有短信软件和拨号软件,两者都属于Software范畴,但是,他们所在的操作系统平台不一样,即便是同一家公司出品的软件,其代码的实现逻辑也是不同的。
UML图:
代码
CarFactory.java
public abstract class CarFactory { public abstract ITire createTire(); public abstract IEngine createEngine(); public abstract IBrake createBrake();}
ITire.java
public interface ITire { void tire();}
NormalTire
public class NormalTire implements ITire { @Override public void tire(){ System.out.println("普通轮胎"); }}
IEngine.java
public interface IEngine { void engine();}
ImportEngine.java
public class ImportEngine implements IEngine { @Override public void engine(){ System.out.println("进口发动机"); }}
DomesticEngine.java
public class DomesticEngine implements IEngine { @Override public void engine(){ System.out.println("国产发动机"); }}
IBrake.java
public interface IBrake { void brake();}
SeniorBrake.java
public class SeniorBrake implements IBrake { @Override public void brake(){ System.out.println("高级制动"); }}
Q3Factory.java
public class Q3Factory extends CarFactory { @Override public ITire createTire(){ return new NormalTire(); } @Override public IEngine createEngine(){ return new DomesticEngine(); } @Override public IBrake createBrake(){ return new NormalBrake(); }}
Q7Factory.java
public class Q7Factory extends CarFactory{ @Override public ITire createTire(){ return new SUVTire(); } @Override public IEngine createEngine(){ return new ImportEngine(); } @Override public IBrake createBrake(){ return new SeniorBrake(); }}
SUVTire.java
public class SUVTire implements ITire { @Override public void tire(){ System.out.println("越野轮胎"); }}
Client.java
public class Client { public static void main(String[] args){ CarFactory factoryQ3=new Q3Factory(); factoryQ3.createTire().tire(); factoryQ3.createEngine().engine(); factoryQ3.createBrake().brake(); System.out.println("-----------------------"); CarFactory factoryQ7=new Q7Factory(); factoryQ7.createTire().tire(); factoryQ7.createEngine().engine(); factoryQ7.createBrake().brake(); }}
运行结果:
0 0
- 工厂模式 -- 抽象工厂
- 工厂模式-抽象工厂
- 工厂模式-抽象工厂
- 工厂模式/抽象工厂模式
- 工厂模式&&抽象工厂模式
- 工厂模式---抽象工厂模式
- 工厂模式&抽象工厂模式
- 工厂模式,抽象工厂模式
- 【模式】抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂&工厂模式&抽象工厂模式
- 工厂方法,抽象工厂模式
- 2,工厂模式--抽象工厂
- C#工厂模式-抽象工厂
- 工厂模式与抽象工厂
- 抽象工厂设计模式
- 抽象工厂模式
- 筛选法找素数算法的一点改进
- 机房收费系统(一)登录
- Java - 华为机试训练 - 密码验证合格程序(正则表达式判断)
- py-faster-rcnn源码解读系列(五)——stage1_rpn_train.pt
- 机房收费系统(四)-上下机总结
- 抽象工厂模式
- 统计文件中数据出现的次数并排序
- 针对多种屏幕进行设计
- Java容器/集合总结
- Apache ab 压测
- PAT(乙级)1011 个位数统计 (15)
- Struts2学习笔记之简单登录
- noip模拟赛(一)密码
- 一个servlet响应多个请求实现方式--反射