首先,工厂模式也是一种创建型设计模式,是最常用的Java设计模式之一。在工厂模式下,客户端直接通过一个工厂类(示例中的MIUIFactory类)去使用自己所需求的对象及其方法,且不用管该对象的具体创建过程和其类的实现方法。该模式主要解决接口选择的问题。
举个例子:小米手机制造商是一个工厂类,它可生产的小米手机有小米9,小米10等型号,客户只需要根据需求从制造商购买手机,而不需要去知道它们是怎么被生产的。
代码如下:
public class MIUIPhone { // 手机型号 private String phoneModel; // 构造方法 public MIUIPhone(String phoneModel){ this.phoneModel=phoneModel; } // 显示手机型号 public void displayModel(){ System.out.println("MI model is "+phoneModel); } }代码如下(MI9):
public class MI9 extends MIUIPhone { public MI9(String phoneModel) { super(phoneModel); } }代码如下(MI10):
public class MI10 extends MIUIPhone { public MI10(String phoneModel) { super(phoneModel); } }代码如下:
public class MIUIFactory { //查看手机型号 public void getMIModel(String Model){ if(Model.equalsIgnoreCase("MI9")){ //查看小米9型号 new MI9(Model).displayModel(); }else if(Model.equalsIgnoreCase("MI10")){ // 查看小米10型号 new MI10(Model).displayModel(); } } }代码如下:
String model1="MI9"; String model2="MI10"; MIUIFactory miuiFactory=new MIUIFactory(); miuiFactory.getMIModel(model1); miuiFactory.getMIModel(model2);在了解使用场景前先来看看工厂模式的优点: (1)解耦:不需要创建和初始化对象,只去使用即可,这样也方便后期的更改和维护。 (2)降低了代码的重复性:在工厂类中创建好类后,可根据需求在多处使用,减少了创建对象代码的重复。 (3)可扩展性:如果需要一个新的类去实现新的需求,可以再增加一个具体实现类,然后再工厂类创建新的对象。 应用场景例如,日志记录器:可以根据将日志存到本地,远程服务器等。 数据库选用:我们可以设计一个工厂类来选择使用那种数据库。