工厂方法模式
定义
工厂方法模式又称为工厂模式,抽象出对象创建方法,将实际创建对象的方法下沉到对应的工厂。
问题
小明船厂的业务越来越多,当初租的一块场地已经拥挤不堪,所有的业务都在岛上的划分的一块区域进行,现在需要进行业务重组,再租几块场地来进行开发,那么怎么划分比较合理呢?
怎么解
我们可以分为总部,小型船厂、中型船厂、大型船厂。总部接单下达生产指标分别到不同的船厂,不同的船厂造不同尺寸的船
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| public interface ShipFactory { public Ship createShip(); }
public class Ship { public String move() { return ""; } }
public class SmallShip extends Ship { public String move() { return "2海里/小时"; } }
public class MiddleShip extends Ship { public String move() { return "10海里/小时"; } }
public class BigShip extends Ship { public String move() { return "20海里/小时"; } }
public class SmallFactory implements ShipFactory() { public Ship createShip() { return new SmallShip(); } }
public class MiddleFactory implements ShipFactory() { public Ship createShip() { return new MiddleShip(); } }
public class BigFactory implements ShipFactory() { public Ship createShip() { return new BigShip(); } }
public static void main(String [] args) { ShipFactory smallFactory = new SmallFactory(); Ship ship = smallFactory.createShip(); ship.move();
ShipFactory middleFactory = new MiddleFactory(); ship = middleFactory.createShip(); ship.move();
ShipFactory bigFactory = new BigFactory(); ship = bigFactory.createShip(); ship.move(); }
|
在上述代码中,我们通过不同的工厂来创建出同一类的产品(小船厂也造不出大型船),用户不需要知道我是从哪个工厂怎么造出来的,以后如果业务线再扩大时,我们可以新建另外一个工厂来解决