java设计模式之一工厂模式(Factory Method)
来源:互联网 发布:秦美人盾牌进阶数据 编辑:程序博客网 时间:2024/05/23 02:06
1.普通工厂模式
字面意思理解,就是工厂生产产品,同样的是生产produce方法,但不同的厂生产出来的产品是不同的。
我们用一个简单的例子来实现:
首先创建一个共用的接口类:
/** * @author joker 2016-06-13 * 工厂的接口类,每个工厂同有的就是生产这个方法 */public interface FactoryInter {public void produce();}
其次,创建两个厂房实现这个接口:
public class AudiFactory implements FactoryInter{ @Override public void produce() { System. out.println("我生产的是奥迪车" ); }}
public class BMWFactory implements FactoryInter{ @Override public void produce() { System. out.println("我生产的是宝马车" ); }}
然后建造工厂生产车子:
public class CarFactory { public FactoryInter buildCar(String type){ switch (type ) { case "BMW" : return new BMWFactory(); case "Audi" : return new AudiFactory(); default: return null ; } }}
测试:
public class testFactory { public static void main(String[] args) { CarFactory carFactory=new CarFactory(); FactoryInter produce= carFactory.buildCar("BMW" ); produce.produce(); }}
输出:我生产的是宝马车
总结:这是最基本的工厂模式,根据不同的传参创建不同的工厂,但是如果参数传递错误就不能进行生产,必须实现约定。
2.多个工厂方法
只需要把刚才的传参方式的建造修改一下即可:
public class CarFactory {// public FactoryInter buildCar(String type){// switch (type) {// case "BMW":// return new BMWFactory();// case " Audi":// return new AudiFactory();// default:// return null;// }// } public FactoryInter buildBMWCar(){ return new BMWFactory(); } public FactoryInter buildAudiCar(){ return new AudiFactory(); }}
然后修改最后的测试方法:
public static void main(String[] args) {// CarFactory carFactory=new CarFactory();// FactoryInter produce=carFactory.buildCar("BMW");// produce.produce(); CarFactory carFactory=new CarFactory(); FactoryInter bmwCar= carFactory.buildBMWCar(); bmwCar.produce(); }
最后输出: 我生产的是宝马车
总结:这样即可根据不同的需求造出不同的车子了,而不用去理会那些约定。更为实用快捷。
3.静态工厂模式
其实就是把生产方法都设置为静态的,省去了初始化这一步了,如下修改:
public static FactoryInter buildBMWCar(){ return new BMWFactory(); } public static FactoryInter buildAudiCar(){ return new AudiFactory(); }
然后测试类修改成如下:
public static void main(String[] args) {// CarFactory carFactory=new CarFactory();// FactoryInter produce=carFactory.buildCar("BMW");// produce.produce(); // CarFactory carFactory=new CarFactory();// FactoryInter bmwCar=carFactory.buildBMWCar();// bmwCar.produce(); FactoryInter audiCar=CarFactory. buildAudiCar(); audiCar.produce(); }
最后输出: 我生产的是奥迪车
综上:就是一个工厂的演变过程,在实际项目过程中如果出现大量的产品需要创建且共用一个接口的,即可用工厂模式实现,而静态工厂类是用的最多的。
0 0
- java设计模式之一工厂模式(Factory Method)
- 设计模式之一 工厂方法模式(Factory Method)
- 设计模式之一---工厂方法模式【Factory Method模式】 (java版)
- Java开发中的23种设计模式之一:工厂方法模式(Factory Method)
- 设计模式之一---工厂方法模式【Factory Method模式】
- 设计模式之一---抽象工厂模式【Factory Method模式】
- 设计模式之一---工厂方法模式【Factory Method模式】
- 设计模式之一---工厂方法模式【Factory Method模式】
- 设计模式之一---工厂方法模式【Factory Method模式】
- 设计模式之一---工厂方法模式【Factory Method模式】
- 设计模式之一---工厂方法模式【Factory Method模式】
- java设计模式(一)--工厂模式(Factory Method)
- Java设计模式-工厂方法(Factory Method)模式
- Java设计模式 - 工厂方法模式(Factory Method)
- java设计模式--工厂方法模式(Factory Method)
- java设计模式学习 ----- 工厂方法模式(Factory Method)
- java设计模式1--工厂方法模式(Factory Method)
- Java设计模式:工厂方法模式(Factory Method Pattern)
- Linux下TI omap芯片 MUX 配置分析(以AM335X芯片为例)
- CSS 中文字体表达方式
- MFC--显示HTTP获取到XML的列表信息
- laravel5.0在linux环境下解决.htaccess无效和去除index.php
- SSL 验证过程
- java设计模式之一工厂模式(Factory Method)
- 指向学生的指针
- hasOwnProperty()
- 模拟链表
- 一尺、一英尺、一寸和一英寸分别等于多少厘米?
- CSS vs JS动画:谁更快?
- Combination Sum II 找出Sum符合要求的组合系列2
- 四、流插入(右移)和流提取(左移)运算符重载
- 10044--- JDK8与JDK7并存时切换的问题