目录
设计模式简介
设计模式概念
- 设计模式是前辈总结的设计经验
- 设计模式的目标是代码更容易理解更容易维护
- 通过设计模式可以让代码更加可靠
设计模式的分类
- 创建型模式
- 结构型模式
- 行为型模式
工厂模式
- 是创建型模式的一种
- 用于隐藏创建对象的细节
- 工厂模式核心:工厂类(Factory)
- 可细分为:简单工厂、工厂方法与抽象工厂
特点
- 实现类要实现相同的接口
- 隐藏了创建类的细节,直接面向工厂,让工厂帮我们选择适当的类
- 无论是工厂还是使用时全是面向接口进行的开发
- 在工厂里由工厂决定实现类是哪个,创建实现类的对象
简单工厂
应用场景例如:i18n国际化;多端应用切换。
创建方法:
- 抽象接口,例如下面的I18N;
- 定义实现该接口的的实现类,例如Chinese、Italian、Spainish
- 定义工厂类,工厂类一句外界传入的参数选择实例化并返回,例如下面的I18NFactory
- 使用环节,通过工厂类拿到需要的实例化对象,再用该对象进行操作,例如:Software
接口:
//Internationalization
public interface I18N {
public String getTitle();
}
实现类:
public class Chinese implements I18N {
public String getTitle(){
return "人事管理系统";
}
}
public class Italian implements I18N {
public String getTitle() {
return "Sistema della direzione del personale";
}
}
public class Spainish implements I18N {
public String getTitle() {
return "Sistema de gesti¨®n del personal";
}
}
工厂类:
// 大多工厂类的后缀都是Factory
public class I18NFactory {
// 静态工厂
public static I18N getI18NObject(String area){
if(area.equals("China")){
return new Chinese();
}else if(area.equals("spain")){
return new Spainish();
}else if(area.equals("Italy")){
return new Italian();
}else{
return null;
}
}
}
使用:
/**
* 1.实现类要实现相同的接口
* 2.隐藏了创建类的细节,直接面向工厂,让工厂帮我们选择适当的类
* 3.无论是工厂还是使用时全是面向接口进行的开发
* 在工厂里由工厂决定实现类是哪个,创建实现类的对象
*/
public class Software {
public static void main(String[] args){
// 由static关键字修饰的,是静态工厂,不需要new实例化,可以直接调用静态方法
I18N i18N = I18NFactory.getI18NObject("China");
System.out.println(i18N.getTitle());
}
}
参考:慕课网-java工程师