在Android开发中,最常见的工厂模式应该就是Bitmap的创建了,因为Bitmap的创建是分很多种方式的,我们可以使用本地文件来创建Bitmap对象,也可以使用网络上的资源来创建Bitmap对象,具体方法如下:
1 | BitmapFactory.decodeResource(this.getResources(),R.drawable.haha); //使用本地文件 |
下面来模拟一下Bitmap对象的创建过程
- 创建抽象产品类
1 | public abstract class BitmapProduct { |
- 创建具体产品类
1 | public class srcBiamapProduct extends BitmapProduct { |
本地文件生成的Bitmap对象
1
2
3
4
5
6 public class networkBitmapProduct extends BitmapProduct {
@Override
public void method() {
System.out.print("networkBitmapProduct");
}
}网络资源生成的Bitmap对象
- 创建抽象工厂类
1 | public abstract class BitmapFactory { |
- 创建具体工厂类
1 | public class concreteFactory extends BitmapFactory { |
使用如下:
1 | public class Main { |
这里的Bitmap创建和我们在Android开发时所使用的工厂模式还是有区别的,因为在Android中Bitmap创建采用的时静态工厂模式,像这样
1 | public class BitmapFactory { |
除了上述的一般方法之外,我们也可以使用反射来进行创建,不过鉴于反射会对性能产生影响,要慎用
- 抽象工厂类
1 | public abstract class BitmapFactory { |
- 具体工厂类
1
2
3
4
5
6
7
8
9
10
11
12public class concreteFactory extends BitmapFactory {
@Override
public <T extends BitmapProduct> T createBitmap(Class<T> tClass) {
BitmapProduct bitmapProduct = null;
try {
bitmapProduct = (BitmapProduct) Class.forName(tClass.getName()).newInstance();
}catch (Exception e) {
e.printStackTrace();
}
return (T) bitmapProduct;
}
}
使用
1 | public class Main { |