定义
工厂办法模式是咱们开发中应用频率十分高的一个设计模式,比方赫赫有名的 SPRING 框架,IOC 就是工厂办法模式,工厂模式定义为:定义一个用于创建对象的接口,让自雷决定实例化那一个类。工厂形式应用一个类的实例化提早到其子类。
简略工厂模式
假如一个模块只须要一个鼠标产品工厂类,类图如下:
代码实现:
/**
* 鼠标形象接口
*/
public interface Mouse {
/**
* 滚轮
*/
void roller();}
/**
* 我是 A 鼠标
*/
public class AMouse implements Mouse {
@Override
public void roller() {}
}
/**
* 我是 B 鼠标
*/
public class BMouse implements Mouse {
@Override
public void roller() {}
}
/**
* 鼠标产品工厂类
*/
public class MouseProductFactory {public static Mouse createMouse(Class mouseClass){
Mouse mouse = null;
try {mouse = (Mouse) Class.forName(mouseClass.getName()).newInstance();} catch (Exception e) {e.printStackTrace();
}
return mouse;
}
}
/**
* 客户端类
*/
public class Client {public static void main(String[] args) {Mouse mouse = MouseProductFactory.createMouse(AMouse.class);
mouse.roller();}
}
长处
1. 良好的封装性,代码构造清晰。如果一个对象须要一个具体的产品对象,只须要晓得这个产品的类名 / 束缚字符串就饿能够了,不须要晓得创建对象的深信过程,升高模块间的耦合
2. 扩展性好,在新增产品的状况下,只须要具体的工厂类或者扩大一个工厂类就能够实现。
3. 屏蔽产品类。调用者只须要晓得产品接口,不须要关注产品的实现过程。
4. 工厂模式是典型的接口框架,高层模块只须要晓得形象接口类,不须要关怀具体的实现。合乎迪米特法令,咱们不须要的不必去交换,也合乎依赖倒置准则,只依赖产品的抽象类。