工厂模式是最常用的设计模式之一。工厂模式的目的降低产品的耦合,更好的使用不同的使用场景。
无论是简单工厂模式、工厂模式、抽象工厂模式都是工厂模式,形式和特点上极为相似,我们没有必要去深究他们之间的演变,而更好的关注代码的耦合是否达到你想要的结果。
【下面举个实际生产过程中使用到的例子】Java项目跨平台的License授权管理中对于工厂模式的使用
【需求分析】
对于了解License授权管理的人都知道硬件信息绑定,作为你本机授权的一个机制。调用不同的系统API来进行硬件信息绑定。
【代码实现】
public class HardWareFactory {
public static HardWareUtil getHardWareUtil(){
//
if (SysUtil.WINDOWS.equal(SysUtil.getSystem())){
return new HardWareWindows();
}else {
return new HardWareLinux();
}
return null;
}
}
public class HardWareUtil {
public String sysName;
public String getMac(){
return null;
}
public String getRandom(){
return null;
}
public String getCpuInfo(){
return null;
}
public String getSysName(){
return sysName;
}
public void setSysName(String sysName){
this.sysName = sysName;
}
}
public class HardWareWinodws extends HardWareUtil{
public HardWareWinodws(){
super.setSysName("windows");
}
@override
public String getRandom(){
//******
return **;
}
}
public class HardWareLinux extends HardWareUtil{
public HardWareWinodws(){
super.setSysName("linux");
}
@override
public String getRandom(){
//******
return **;
}
}
提供一个参考方案,我们有更多的场景需要,比如数据库连接工厂类等等。我们的目的是解耦,不需要知道我的数据库是什么,不需要知道我的操作系统是什么,我只调用我需要的功能。
而抽象工厂模式就是更多工厂类的一个集合。比如我需要一个玩具,可以产生形状工厂类,颜色工厂类,材料工厂类等。实际没有本质区别。