设计模式——工厂模式

来源:互联网 发布:中国大数据企业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