以下是一个基于打印机的工厂模式
1:抽象工厂类
public class PrinterFactory {
public static AbstractPrinter getPrinter(Activity activity){
if(ExtUtil.isWizarpos()){
return WizarPrinter.getInstance(activity);
}else if (WorkService.workThread.isConnected()){
return LinDongPrinter.getInstance(activity);
}else if(USBPrinter.getInstance(activity).isUSBConnected()){
return USBPrinter.getInstance(activity);
}else{
return NullPrinter.getInstance();
}
}
public static void linkUSBPrinter(Activity activity){
USBPrinter.getInstance(activity);
}
}
2:抽象打印机类,
public abstract class AbstractPrinter {
public abstract boolean printContent(Context context, String content);
public abstract boolean havePaper(Context context);
public String getOrderString(OrderInfoModel order){。。。。}//以下是一些公用方法类,如把对象转化成对应打印字符串方法,不详写}
3:具体打印机类,实现具体的打印方法
public class USBPrinter extends AbstractPrinter {
@Override
public boolean havePaper(Context context) {
// TODO Auto-generated method stub
return usbCtrl.revByte(dev) == 0x38 ? false : true;
}
static USBPrinter usbPrinter;
public static USBPrinter getInstance(Activity activity) {
// TODO Auto-generated method stub
if (usbPrinter == null)
usbPrinter = new USBPrinter(activity);
return usbPrinter;
}
@Override
public boolean printContent(Context context, String content) {
// TODO Auto-generated method stub
print(content);
return true;
}
}
4:使用
PrinterFactory.getPrinter(Main2Activity.this).printContent(cxt, "test");
5:作用
1:扩展性好,当添加新的打印机时只需要添加一个新的类,继承AbstractPrinter,实现其具体方法即可
2:结构清晰,易读性好
3:封装性好
4:使用方便,只需要一行代码