博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式 之 工厂模式
阅读量:5313 次
发布时间:2019-06-14

本文共 3296 字,大约阅读时间需要 10 分钟。

1.简单工厂模式,只是介绍使用,实际不实用

package com.test.pattern;/** * @author Ash * @date: 2016年8月8日 下午12:54:35  * @func: 简单工厂模式 * @email 408657544@qq.com * @Copyright: 2016 Ash. All rights reserved. *///产品类abstract class BMW1 {    public BMW1() {}}class BMW1320 extends BMW1 {    public BMW1320() {        System.out.println("制造 --> BMW320");    }}class BMW1523 extends BMW1 {    public BMW1523() {        System.out.println("制造 --> BMW523");    }}//工厂类class Factory {    public BMW1 createBMW1(int type) {        switch (type) {        case 1320:            return new BMW1320();        case 1523:            return new BMW1523();        default:            return null;        }    }}//客户类public class Customer1 {    public static void main(String[] args) {        Factory factory = new Factory();        BMW1 bmw1320 = factory.createBMW1(1320);    }}

2.工厂方法模式

package com.test.pattern;/** * @author Ash * @date: 2016年8月8日 下午1:07:40  * @func: 工厂方法模式 * @email 408657544@qq.com * @Copyright: 2016 Ash. All rights reserved. *///产品类abstract class BMW2 {    public BMW2() {}}class BMW2320 extends BMW2 {    public BMW2320() {        System.out.println("制造 --> BMW320");    }}class BMW2523 extends BMW2 {    public BMW2523() {        System.out.println("制造 --> BMW2523");    }}//工厂类interface FactoryBMW2 {    BMW2 creaBMW2();}class FactoryBMW2320 implements FactoryBMW2 {    @Override    public BMW2 creaBMW2() {        return new BMW2320();    }    }class FactoryBMW2523 implements FactoryBMW2 {    @Override    public BMW2 creaBMW2() {        return new BMW2523();    }}//客户类public class Custormer2 {    public static void main(String[] args) {        FactoryBMW2 factory = new FactoryBMW2320();        factory.creaBMW2();    }}

3.抽象工厂模式

package com.test.pattern;/** * @author Ash * @date: 2016年8月8日 下午1:25:07  * @func: 抽象工厂模式  * @email 408657544@qq.com * @Copyright: 2016 Ash. All rights reserved. *///发动机interface Engine {}class EngineA implements Engine {    public EngineA() {        System.out.println("制造 EngineA");    }}class EngineB implements Engine {    public EngineB() {        System.out.println("制造EngineB");    }}//空调interface Airconditioner {}class AirconditionerA implements Airconditioner{    public AirconditionerA() {        System.out.println("制造AirconditionerA");    }}class AirconditionerB implements Airconditioner{    public AirconditionerB() {        System.out.println("制造AirconditionerB");    }}//工厂类interface AbstractFactory {    public Engine createEngine();    public Airconditioner createAirconditioner();}class FactoryBMW3320 implements AbstractFactory{    @Override    public Engine createEngine() {        return new EngineA();    }    @Override    public Airconditioner createAirconditioner() {        return new AirconditionerA();    }}class FactoryBMW3523 implements AbstractFactory {    @Override    public Engine createEngine() {        return new EngineB();    }    @Override    public Airconditioner createAirconditioner() {        return new AirconditionerB();    }}public class Customer3 {    public static void main(String[] args) {        AbstractFactory factory = new FactoryBMW3320();        factory.createAirconditioner();        factory.createEngine();    }}

抽象工厂模式是工厂方法模式的升级版,蛋实际上我觉得没有多大区别,只不过前者的工厂类中有多个生产不同产品的方法而已

转载于:https://www.cnblogs.com/heben/p/5749003.html

你可能感兴趣的文章
数字统计
查看>>
asp.net 文件操作小例子(创建文件夹,读,写,删)
查看>>
20180620小测
查看>>
7年,OpenStack从入门到放弃|送书
查看>>
部署mariadb高可用
查看>>
iptables设置规则
查看>>
聊聊setTimeout和setInterval线程
查看>>
计算机经典书箱
查看>>
克隆节点及添加属性节点
查看>>
SQL入门经典(八)之存储过程
查看>>
Chrome/FireFox处理JSON的插件
查看>>
【转】ACM之Java新手速成
查看>>
日志分析工具 Log Parser
查看>>
18 HTML标签以及属性全
查看>>
tensorflow 前向传播 2019.07.19
查看>>
安装完CentOS 7 Minimal之后,从头打造桌面工作环境
查看>>
利用GDAL实现影像的几何校正
查看>>
不错的iOS相关的主页或站点 (更新于14-06-22)
查看>>
less嵌套规则
查看>>
【转】深入浅出ShellExecute
查看>>