前言
2017/10/24 14:44:57
之前重温了一下设计模式,最近又在看Android
源码,便想着根据自己的理解,将设计模式与源码结合起来,看看Android
中都使用了哪些设计模式,做成一个系列.
概念
是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类
举个栗子
以计算器的运算法则为栗
先来看看UML图
定义一个抽象父类Operation
.
public abstract class Operation {
public double number_A;
public double number_B;
//get set method
...
public abstract double getResult();
}
将所有的运算的都继承于Operation
,实现getResult()
方法
//加法类
public class OperationAdd extends Operation {
public double getResult() {
double result = 0;
result = number_A + number_B;
return result;
}
}
//减法类,除法类,乘法类,类似
最后通过工厂去实例化
public class Factory {
public enum Type {
Add, Div, Mul, Sub
}
public static Operation getOperation(Type type) {
Operation operation = null;
switch (type) {
case Add:
operation = new OperationAdd();
break;
case Div:
operation = new OperationDiv();
break;
case Mul:
operation = new OperationMul();
break;
case Sub:
operation = new OperationSub();
break;
}
return operation;
}
}
使用
Operation operation;
operation = Factory.getOperation(Type.Add);
operation.number_A = 1;
operation.number_B = 2;
System.out.println("result:" + operation.getResult());
Android中的简单工厂模式
BitmapFactory
:不同于上面的栗子,通过传入的参数来实例化不同的对象,BitmapFactory
是通过不同的方法名和不同的参数来返回Bitmap
BitmapFactory.decodeByteArry(...);
BitmapFactory.decodeFile(...);
BitmapFactory.decodeResource(...);
BitmapFactory.decodeStream(...);
结语
有错请指出.
学无止境.