工厂模式(Factory Pattern) 是 Java 中最经常使用的设计模式之一。 这种类型的设计模式属于建立型模式, 它提供了一种建立对象的最佳方式。 java
在工厂模式中, 咱们在建立对象时不会对客户端暴露建立逻辑, 而且是经过使用一个共同的接口来指向新建立的对象。 编程
工厂模式让调用者与被调用者之间解耦 :当二者发生变化时, 相互之间的影响降到最低, 这个原则体显了项目的可维护性 。
优势:面向接口编程, 体现了面向对象的思想; 将建立对象的工做转移到了工厂类;
JDK 中的工厂设计模式实例 :
a.java.util.Calendar, ResourceBundle and NumberFormat getInstance() 使用了工厂方法模式;
b.valueOf() 在包装类中, 如Boolean, Integer 也使用了工厂方法模式;
c.Spring框架中, 就是使用了工厂模式来解决对象的建立。
设计模式
举例说明:建立不一样的产品对象,例如手机、电脑。框架
a.建立接口,以供不一样产品去实现ide
public interface Product {
public void work();
}
b.以供不一样对象类去实现接口的方法测试
public class Computer implements Product {
@Override
public void work() {
System.out.println("电脑开始工做...");
}
}
public class Phone implements Product {
@Override
public void work() {
System.out.println("手机开始工做...");
}
}
c.定义工厂类来建立对象spa
public class ProductFactory {
public static Product getProduct(String name) {
if("phone".equals(name)){ //可将"phone"配置到文件中获取出来
return new Phone();
}else if ("computer".equals(name)){ //可将"computer"配置到文件中获取出来
return new Computer();
}else{
throw new ProductException("procuct 不存在!"); //自定义异常ProductException
}
}
}
测试对比:设计
public class Test { public static void main(String[] args) {//1 Product p = new Phone();//1 p.work();//2 工厂模式:让对象之间的强依赖,转化成对工厂对象的依赖 Product p = ProductFactory.getProduct("phone"); //可将"phone"配置到文件中获取出来 p.work(); }}