工厂模式是java中最常用的设计模式之一,属于创建型模式,它提供一种创建对象的最佳方式
特点:在工厂模式中,创建对象时不会对客户端(调用方)暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象
优点:降低耦合度
代码实现:
package com.heiheihei.pojo;
/**
* @author 嘿嘿嘿1212
* @version 1.0
* @date 2020/2/21 21:51
* 工厂规则->只生成手机
*/
public interface Phone {
/**
* 生成手机
*/
void makePhone();
}
package com.heiheihei.pojo;
/**
* @author 嘿嘿嘿1212
* @version 1.0
* @date 2020/2/21 21:52
* 手机类型
*/
public class HuaWei implements Phone {
public void makePhone() {
System.out.println("生产华为手机");
}
}
package com.heiheihei.pojo;
/**
* @author 嘿嘿嘿1212
* @version 1.0
* @date 2020/2/21 21:53
* 手机类型
*/
public class XiaoMi implements Phone {
public void makePhone() {
System.out.println("生产小米手机");
}
}
package com.heiheihei.pojo;
/**
* @author 嘿嘿嘿1212
* @version 1.0
* @date 2020/2/21 21:56
* 工厂类
*/
public class Factory {
public static Phone getInstance(String brand) {
if ("HuaWei".equals(brand)) {
return new HuaWei();
} else if ("XiaoMi".equals(brand)) {
return new XiaoMi();
} else {
return null;
}
}
}
package com.heiheihei.pojo;
/**
* @author 嘿嘿嘿1212
* @version 1.0
* @date 2020/2/21 22:00
*/
public class PhoneTest {
public static void main(String[] args) {
Phone huaWei = Factory.getInstance("HuaWei");
if (huaWei != null) {
huaWei.makePhone();
}
Phone xiaoMi = Factory.getInstance("XiaoMi");
if (xiaoMi != null) {
xiaoMi.makePhone();
}
}
}
原理与作用:
使用统一的接口进行规范操作,并使用同一个工厂类的同一个方法对外开放,有利于获取同一作用的不同实现方式
结果
建议将魔法值替换
使用enum来替换