设计模式——工厂模式
来源:互联网 发布:中国大数据企业10强榜 编辑:程序博客网 时间:2024/05/16 12:02
1:简单工厂模式
package com.andrew.designpattern.simplefactory;//抽象产品角色interface Car{public void driver();}//具体产品角色class Benz implements Car{@Overridepublic void driver() {System.out.println("我要开奔驰。。。");}}class BMW implements Car{@Overridepublic void driver() {System.out.println("我要开宝马。。。");}}//工厂类角色class Driver {//工厂方法,注意返回类型是抽象产品角色public static Car driverCar(String type){if("benz".equalsIgnoreCase(type)){return new Benz();}else if("bmw".equalsIgnoreCase(type)){return new BMW();}else{System.out.println("抱歉,工厂暂时不生产" + type +"类型汽车。");return null;}}}public class SimpleFactory {public static void main(String args[]){Car car = Driver.driverCar("benz");if(null != car){car.driver();}}}
2:工厂方法模式
对于上面简单工厂模式的产品部分来说,它是符合开闭原则的--对扩展开放、对修改关闭
但是工厂部分好像不太理想,因为每增加一辆车,都要在工厂类中增加相应的商业逻辑和判断逻辑
这是违背开闭原则的,所以这里用到了工厂方法模式
package com.andrew.designpattern.factorymethod;//抽象产品角色interface Car{public void driver();}//具体产品角色class Benz implements Car{@Overridepublic void driver() {System.out.println("我要开奔驰。。。");}}class BMW implements Car{@Overridepublic void driver() {System.out.println("我要开宝马。。。");}}//抽象工厂角色interface Driver{public Car driverCar();}//具体工厂角色class BenzDriver implements Driver{@Overridepublic Car driverCar() {return new Benz();}}class BMWDriver implements Driver{@Overridepublic Car driverCar() {return new BMW();}}public class FactoryMethod {public static void main(String args[]){Driver driver = new BenzDriver();Car car = driver.driverCar();car.driver();}}
3:抽象工厂模式
http://laughingchs.iteye.com/blog/1169986
总结:
待续。。。
0 0
- 设计模式—工厂模式
- 设计模式—工厂模式
- 设计模式—工厂模式
- 设计模式—工厂模式
- 设计模式—工厂模式
- 设计模式—工厂模式
- 设计模式—工厂模式
- 设计模式—工厂模式
- 设计模式—工厂模式
- 设计模式—工厂模式
- 设计模式—工厂模式
- 设计模式—工厂模式
- 设计模式—工厂模式
- 设计模式——工厂设计模式
- Java设计模式—工厂设计模式
- 设计模式——抽象工厂模式、工厂方法模式
- Java设计模式—工厂方法模式&抽象工厂模式
- Java设计模式—工厂方法模式&抽象工厂模式
- hit_training_20140403
- quick-cocos2dx环境安装
- 冒泡排序java实现
- linux的openfire运行日志配置经历
- java异常中一个有趣的例子
- 设计模式——工厂模式
- Android 常用的ui(单选框 多选框 下拉列表框 拖动条)
- Android随记(3):打开应用程序时,先白屏,然后加载界面
- Python - 继承object类
- 利用废物自制移动电源
- Redhat关于pam_tally2计数器在每次sudo时都增加的bug
- 将C++ IplImage 图像用C#读取
- 枚举类型enum
- 树与灌溉系统