定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。
特点:一个抽象工厂类,多个产品抽象类。一个工厂类可以产生一系列产品族的产品。抽象工厂支持多个产品,这也是和简单工厂、工厂方法的最大区别。
优点:解耦。
缺点:代码结构复杂,不一样维护
第一步:定义产品接口:抽象工厂支持多个产品,所以我们定义两个产品接口。
//扫描头产品接口
public interface IScanHardware {
public String getBarcode();
}
//RFID 接口
public interface IRFIDRead {
public String read();
}
实现扫描接口
//霍尼扫描头
public class Honeywell implements IScanHardware {
@Override
public String getBarcode() {
return "Honeywell_barcodeData";
}
}
//moto的扫描头
public class MOTO implements IScanHardware {
@Override
public String getBarcode() {
return "Moto_barcodeData";
}
}
实现RFID读卡接口
//霍尼 RFID读卡实现类
public class HoneywellRFID implements IRFIDRead {
@Override
public String read() {
return "honeywell--rfid";
}
}
//moto RFID读卡实现类
public class MOTORFID implements IRFIDRead {
@Override
public String read() {
return "moto--rfid";
}
}
第二步:定义抽象工厂
public abstract class AbstractFactory {
public abstract IRFIDRead createRFID();
public abstract IScanBarcede createBarcode();
}
实现抽象工厂
//moto 产品
public class MOToFactory extends AbstractFactory {
@Override
public IRFIDRead createRFID() {
return new MOTORFID();
}
@Override
public IScanBarcede createBarcode() {
return new MOTOBarcode();
}
}
//霍尼产品
public class HoneywellFactory extends AbstractFactory {
@Override
public IRFIDRead createRFID() {
return new HoneywellRFID();
}
@Override
public IScanBarcede createBarcode() {
return new HoneywellBarcode();
}
}
第三步:测试类
public class ScanBarcodeTest {
public void main(){
IRFIDRead rfidRead=null;
IScanBarcede scanBarcode=null;
//moto 的扫描头和 rfid 得到的数据
MOToFactory moToFactory=new MOToFactory();
scanBarcode=moToFactory.createBarcode();
rfidRead=moToFactory.createRFID();
rfidRead.read();
scanBarcode.getBarcode();
//honeywell 的扫描头和 rfid 得到的数据
HoneywellFactory honeywellFactory=new HoneywellFactory();
scanBarcode=honeywellFactory.createBarcode();
rfidRead= honeywellFactory.createRFID();
rfidRead.read();
scanBarcode.getBarcode();
}
}
2188

被折叠的 条评论
为什么被折叠?



