首先提出问题--什么是模式?为什么要使用模式?
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
(来自百度百科)
在Java中有着许多模式——工厂模式、观察者模式、代理模式、单例模式等。这篇我们来学习工厂模式,
工厂模式是Java开发中常见的一种模式。
先看下面一段代码:
//定义接口
public interface Lanauage{
public void say();
}
//定义类Chinese
public class Chiness{
public void say(){
System.out.println("说的是汉语");
}
}
//定义类English
public class English{
public void say(){
System.out.println("说的是英语");
}
}
public class LanauageTest{
public static void main(String args[]){
Lanauage l = new Chiness();//①实例化接口
l.say();
}
}
注意①显示的代码行,一个接口类和我们固定子类绑在了一起。这意味着我们代码的耦合会有问题,不利于我们后面的维护,解决的方式就是中间加“第三者”——A-->B-->C模式。改变C、B但是A不需要改变。
修改代码如下:
//定义接口
public interface Lanauage{
public void say();
}
//定义类Chinese
public class Chiness{
public void say(){
System.out.println("说的是汉语");
}
}
//定义类English
public class English{
public void say(){
System.out.println("说的是英语");
}
}
//增加工厂LanauageFactory
public class LanauageFactory{
public static Lanauage getInstance(String className){
if("chiness".equals(className)){
return new Chiness();
}else if("english".equals(className)){
return new English();
}
return null;
}
}
public class LanauageTest{
public static void main(String args[]){
Lanauage l = LanauageFactory.getInstance("chiness");//①
l.say();
}
}
此时观测①行代码,我们发现主类不再与具体子类耦合在一起,方便了以后增加新的子类。若要增加子类,修改LanauageFactory类即可。
总结:用一个单独的类来实现新建实例的过程,这个类就是工厂。