本文共 1863 字,大约阅读时间需要 6 分钟。
说到工厂,你可能会想到批量生产……想到这里,那么我觉得对工厂模式就理解的差不多了。
还是举一个栗子吧。比如Lenovo集团不是生产各种本子嘛,首先呢,人家肯定不止生产一种本子,比如哈,这个厂子已经很高端了,想生产个啥,只要一输入名字,一按按钮,“滴”一声,本子就出来了。
输入:“ThinkPad X1” 滴一声 输出一台ThinkPad X1笔记本输入:“V480” 滴一声 输出一台V480笔记本输入:“Yoga13” 滴一声 输出一台Yoga13笔记本输入…… 滴一声 输出一台……
你现在就能想到,只要能建立一个厂子,这条产品线上的所有产品那就是滴一下的问题。所以看到这里你基本上也能猜到代码咋写了
首先你是要生产笔记本的,那么大的总纲(这里的总纲就是计算机)总得有吧。
package com.creational.factoy;public interface Computer { public String getSymbol();}
总纲写好了,那每种型号的标准就继续写吧。
package com.creational.factoy;public class ThinkPadX1 implements Computer { @Override public String getSymbol() { return "TPX1"; }}
package com.creational.factoy;public class V480 implements Computer { @Override public String getSymbol() { return "V480"; }}
package com.creational.factoy;public class YOGA13 implements Computer { @Override public String getSymbol() { return "YOGA13"; }}
好,个产品系列写好了,下面就是关键的一个大的厂房生产线:
package com.creational.factoy;public class ComputerFactory { public static Computer createComputer(String serial){ if(serial.equalsIgnoreCase("TPX1")){ return new ThinkPadX1(); } else if(serial.equalsIgnoreCase("V480")){ return new V480(); } else if(serial.equalsIgnoreCase("YOGA13")){ return new YOGA13(); } throw new IllegalArgumentException(); }}
工厂类写好了,那下面用的时候就很爽了。
package com.creational.factoy;public class FactoryClient { public static void main(String[] args) { Computer computer = ComputerFactory.createComputer("TPX1"); System.out.println(computer.getSymbol()); computer = ComputerFactory.createComputer("V480"); System.out.println(computer.getSymbol()); computer = ComputerFactory.createComputer("YOGA13"); System.out.println(computer.getSymbol()); }}
最后呢还是放一张UML图,等后面心情好了再看看这图那里长得好看。
参考文献: