###转载请注明出处:http://blog.csdn.net/binbinqq86/article/details/71775093
工厂模式(Factory Pattern),听到这个词,可能首先想到的就是批量生产,没错,这个模式就是用来制造对象的。工厂模式是一个大的概念,细分可以包含三种:
- 简单工厂模式(静态工厂模式)
- 工厂方法模式
- 抽象工厂模式
首先来说一下简单工厂模式,看结构图:
整个结构非常简单,既然是工厂,肯定需要产品,Phone就是我们的抽象产品,所有的手机都继承于它,而SimpleFactory有一个createPhone方法用来创建手机的实例对象,并返回给消费者,这就是一个工厂的职责,通常把createPhone设置为静态方法,这样就不用创建工厂对象,也被称为静态工厂模式,这是最简单的工厂模式,下面是代码:
package com.example.tb.designpatten.factory.simplefactory;
import android.util.Log;
/**
* Created by tb on 2017/5/13.
* 以手机为我们的产品
*/
public class Phone {
private static final String TAG = "Phone";
/**
* @param type 手机型号
*/
public Phone(String type){
printPhoneType(type);
}
public void printPhoneType(String type){
Log.d(TAG, "printPhoneType: "+type);
}
}
package com.example.tb.designpatten.factory.simplefactory;
/**
* Created by tb on 2017/5/13.
* 以小米2为例
*/
public class MI2 extends Phone{
/**
* @param type 手机型号
*/
public MI2(String type) {
super(type);
}
}
package com.example.tb.designpatten.factory.simplefactory;
/**
* Created by tb on 2017/5/13.
* 以小米3为例
*/
public class MI3 extends Phone{
/**
* @param type 手机型号
*/
public MI3(String type) {
super(type);
}
}
package com.example.tb.designpatten.factory.simplefactory;
/**
* Created by tb on 2017/5/13.
* 简单工厂模式(将createPhone方法改为静态就是静态工厂)
*/
public class SimpleFactory {
public Phone createPhone(String type){
Phone phone=null;
if(type.equals("mi2")){
phone=new MI2("mi2");
}else if(type.equals("mi3")){
phone=new MI3("mi3");
}else{
phone=new Phone("unknown");
}
return phone;
}
}
public void test(){
SimpleFactory simpleFactory=new SimpleFactory();
simpleFactory.createPhone("mi2");
}
简单工厂模式就这么多,很容易理解了。下面我们看一下工厂方法模式,老规矩上图