Factory Design Pattern

设计模式

  • 前辈总结的设计经验
  • 使代码更容易理解,更容易维护
  • 让代码更加可靠

设计模式的分类

  • 创建型模式
    • 帮助我们更加精巧的创建对象
  • 结构性模式
    • 重构,抽象,是代码更容易维护和扩展
  • 行为型模式
    • 针对现实中的具体场景进行优化

工厂模式

  • 用于隐藏创建对象的细节
  • 核心: 工厂类,帮助我们创建具体对象
  • 工厂模式可细分为
    • 简单工厂
    • 工厂方法
    • 抽象工厂

  • 所有的对象都实现同一个接口

  • 工厂类负责判断具体创建那个对象,并返回相应的接口

  • 用户只需要传入参数告诉工厂类,工厂类负责根据传入的参数判断具体创建那个对象

  • 对象以接口的形式返回给用户,用户不需要知道具体创建了那个类的对象

  • 用户类

1
2
3
4
5
public static void main(String[] args) {
I18N i18N = I18NFactory.getI18NObject("china");
Device device = DeviceFactory.getDeviceObject("mobile");
System.out.println(device.getHomePage());
}
  • 工厂类
1
2
3
4
5
6
7
8
9
10
11
public class DeviceFactory {
// 静态工厂,创建具体对象的方法是静态的
// 在调用时不需要实例化工厂
public static Device getDeviceObject(String userAgent) {
if (userAgent.equals("mobile")) {
return new MobileDevice();
} else if (userAgent.equals("desktop")) {
return new DesktopDevice();
} else return null;
}
}
  • 接口
1
2
3
public interface Device {
String getHomePage();
}
  • 具体实现
1
2
3
4
5
6
7
8
9
10
11
public class MobileDevice implements Device {
public String getHomePage() {
return "mobile device home page";
}
}

public class DesktopDevice implements Device {
public String getHomePage() {
return "Desktop device home page";
}
}