设计模式 (二) 工厂模式 Java
创始人
2024-05-14 03:00:44
0

目录

一、案例引出

二、简单工厂模式

二、抽象工厂


工厂设计模式,顾名思义类似一家工厂来制造各种产品,目的在于提高代码的可扩展性。

一、案例引出

通过接口来实现一类产品的功能,如目前有飞机、轮船、汽车这类产品的实体类,同时需要具备移动的属性,此时我们优先想到的是通过接口来实现,例如:

插件Moveable接口来让各个需要该属性的对象实现,但这样做在业务结构简单是没问题,当业务结构复杂时,该方式的拓展性并不太好,没增加一种产品都需要去实现多个属性接口。

public interface Moveable {void go();
}
public class Car implements Moveable{@Overridepublic void go() {System.out.println("car goes...");}
}
public class Plane implements Moveable{@Overridepublic void go() {System.out.println("plane goes...");}
}
public class Ship implements Moveable{@Overridepublic void go() {System.out.println("ship goes...");}
}

下面来看看工厂模式是如何实现的

二、简单工厂模式

简单工厂模式适用于产品种类单一的业务

通过简单工厂可以有效管理种类单一的产品

public class SimpleFactory {public static Moveable createCar(){//前至处理return new Car();}public static Moveable createShip(){//前至处理return new Ship();}public static Moveable createPlane(){//前至处理return new Plane();}}

产品创建:当产品增加时直接在工厂里进行添加,拓展性较好

    public static void main(String[] args) {Moveable car = SimpleFactory.createCar();Moveable ship = SimpleFactory.createShip();Moveable plane = SimpleFactory.createPlane();car.go();ship.go();plane.go();}

二、抽象工厂

对于业务复杂,种类较多的产品时简单工厂并不能有效解决种类繁多管理的问题,由此引入抽象工厂进行管理:

我们可以创建一个抽象工厂来管理各个大类的产品:

public abstract class AbstractFactory {abstract Vehicle createVehicle();abstract Food createFood();abstract Weapon createWeapon();
}

分别创建各个大类的抽象类:

public abstract class Food {abstract void eat();
}
public abstract class Vehicle {abstract void go();
}
public abstract class Weapon {abstract void fight();
}

创建多种不同的工厂来加工不同的产品:都继承自AbastractFactory。产品都继承自类别抽象类。

public class ModernFactory extends AbstractFactory{@OverrideVehicle createVehicle() {return new Car();}@OverrideFood createFood() {return new Bread();}@OverrideWeapon createWeapon() {return new AK47();}
}
public class AncientFactory extends AbstractFactory {@OverrideVehicle createVehicle() {return new Ship();}@OverrideFood createFood() {return new Fish();}@OverrideWeapon createWeapon() {return new Arrow();}
}

以上演示为多个不同工厂的实例。

工厂生产产品:该设计模式也可借鉴单例模式来实现静态工厂。

    public static void main(String[] args) {AncientFactory ancientFactory = new AncientFactory();Food food = ancientFactory.createFood();food.eat();}

工厂模式生产和管理产品总结到此。

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
ChatGPT 怎么用最新详细... ChatGPT 以其强大的信息整合和对话能力惊艳了全球,在自然语言处理上面表现出了惊人...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...