写者正在学习设计模式,分享一些心得体会出来。
我所理解的设计模式就是程序员在软件开发过程中,总结出来的一种比较好的设计方法,或者说是编码技巧。多种设计模式表达了在多种特定场景下的设计方法。我会在介绍设计模式的时候,一般会给出常规方案和运用了设计模式这一技巧之后的方案。 通过比较来理解设计模式的益处。
今天我想介绍一下工厂模式:
1 开始
我不会说什么叫工厂模式,不会在这里给出一个很官方的定义。
我们先考虑一个情形,假设你在设计一款飞机大战的游戏,你希望代码给你生成不同种类的敌方飞船,那你会怎么去写代码呢?假设有一些小的飞机, 有一些大战舰,还有一些Boss级别的。
2 没有运用设计模式技巧的代码
2.1 文件 EnemyShip.java
|
|
2.2 文件 OtherEnemyShip.java
|
|
2.3 文件 EnemyShipTest.java
|
|
2.4 输出
|
|
3 运用之后的代码
工厂模式新增加了一个工厂类,由这个类来生产具体的东西。并且在EnemyShip中添加了枚举类型Type来表示飞船的类型。
3.1 文件 EnemyShip.java
|
|
3.2 文件 EnemyShipFactory.java
|
|
3.3 文件 EnemyShipTest.java
|
|
很显然,EnemyShipFactory是对具体的特定类型(EnemyShip的子类)创建过程的封装。对于使用来说,不需要知道怎么去创建一个想要的对象,你要做的只是告诉这个工厂需要什么东西。工厂就给你一个结果。
3.4 输出结果
|
|
结果是相同的。
4 总结
工厂模式是对具体的对象创建过程的封装,在使用的时候不用去记忆类名,你可以从工厂里面拿到你想要的东西。不管是产品名(可以写在工厂类的注释里面), 还是工厂的产品。
使用者只需要记住有这么一个工厂,可以生产某种产品。在具体使用的时候,可以再去看看工厂有哪些产品。