什么是设计模式,设计模式就是在编写软件的过程中,软件工程师们总结出的良好的编程方法,一种软件设计的整体思路,能使程序更优美,更稳定,更条理,在后期的产品扩展功能上也更加的有利。
本篇文章主要是拿一个在工作中做项目的时候的一个例子来阐述一下抽象工厂模式,也有利于自己以后的复习,但同时也希望能帮助到更多的程序猿们。
我们来看一下大概的抽象工厂模式结构图
最基本的
1、抽象工厂,提供统一的接口工厂。
2、具体工厂,用来创建具体的带有关联关系的实例产品
3、统一的产品接口
4、具体产品
然后就可以在每个不同产品中处理不同的逻辑,去做该产品对应的事情
那么我就拿我在项目中用到的代码来看一下
a、抽象接口工厂
public interface BaseFactory {
/**
* 硬件数据
*
* @param opertion
* @return
*/
BaseProduct disposeSerial(int opertion);
/**
* 服务端过来的数据
*
* @param id
* @param data
* @return
*/
BaseProduct disposeServer(int id, String data);
}
b、具体工厂
public class DeliveryFactory implements BaseFactory {
@Override
public BaseProduct disposeSerial(int opertion) {
BaseProduct baseProduct = null;
return baseProduct;
}
@Override
public BaseProduct disposeServer(int id, String data) {
BaseProduct baseProduct = null;
switch (id) {
case 3:
baseProduct = new Product3();
break;
case 4:
baseProduct = new Product4();
break;
case 5:
baseProduct = new Product5();
break;
case 6:
baseProduct = new Product6();
break;
case 11:
baseProduct = new Product11();
break;
case 12:
baseProduct = new Product12();
break;
case 13:
baseProduct = new Product13();
break;
case 14:
baseProduct = new Product14();
break;
case 15:
baseProduct = new Product15();
break;
case 16:
baseProduct = new Product16();
break;
}
return baseProduct;
}
}
c、统一的产品接口
public abstract interface BaseProduct {
public String TAG = BaseProduct.class.getClass().getSimpleName();
/**
* 服务器过来的数据
*/
public abstract void proceServer(String code, String data);
/**
* 串口过来的数据
*
* @param data
*/
public abstract void proceSerial(int code, int opertion, String data);
}
d、各个产品类
public class Product4 implements BaseProduct {
@Override
public void proceServer(String code, String data) {
Log.e(TAG, "data:" + data);
}
@Override
public void proceSerial(int code, int opertion, String data) {
}
}
...只列出一个产品类,其他各个产品和这个产品一样
这种设计模式的好处就是每当再需要添加一个产品去处理的时候,只需要手动创建一个产品,在工厂里面生成一个该产品类的实体就ok,对于每个产品逻辑清晰,两两之间互不影响。