4要素 1多个抽象的产品(产品类型不同) 2多个具体的产品实现类 3抽象工厂 4具体的工厂实现类 5调用
1多个抽象的产品(产品类型不同)
//产品---手机
public interface PhoneProduction {
/* 打电话 */
void call();
/* 玩游戏 */
void paly();
}
//产品---ipad
public interface IpadProduction {
/* 自助学习 */
void learn();
/* 音乐播放 */
void music();
}
2多个具体的产品实现类
//华为手机
@Slf4j
public class HwPhone implements PhoneProduction{
@Override
public void call() {
log.info("华为手机实现打电话功能");
}
@Override
public void paly() {
log.info("华为手机适配玩游戏功能");
}
}
//华为平板
@Slf4j
public class HwIpad implements IpadProduction {
@Override
public void learn() {
log.info("华为平板实现自助学习功能");
}
@Override
public void music() {
log.info("华为平板实现播放音乐功能");
}
}
//苹果手机
@Slf4j
public class IPhone implements PhoneProduction{
@Override
public void call() {
log.info("苹果手机实现打电话功能");
}
@Override
public void paly() {
log.info("苹果手机适配玩游戏功能");
}
}
//苹果平板
@Slf4j
public class Ipad implements IpadProduction {
@Override
public void learn() {
log.info("苹果平板实现自助学习功能");
}
@Override
public void music() {
log.info("苹果平板实现播放音乐功能");
}
}
3抽象工厂
//这个工厂既能生产平板又能生产手机
public interface IProductionFactory {
PhoneProduction phoneProduction();
IpadProduction ipadProduction();
}
4具体的工厂实现类
//苹果工厂
public class AppleFactory implements IProductionFactory {
@Override
public PhoneProduction phoneProduction() {
return new IPhone();
}
@Override
public IpadProduction ipadProduction() {
return new Ipad();
}
}
//华为工厂
public class HwFactory implements IProductionFactory{
@Override
public PhoneProduction phoneProduction() {
return new HwPhone();
}
@Override
public IpadProduction ipadProduction() {
return new HwIpad();
}
}
5测试
public class TestPro {
public static void main(String[] args) {
/* 生产华为系列产品 包括平板和手机*/
/* 首先获得华为工厂 */
IProductionFactory hwFactory = new HwFactory();
IpadProduction hwIpad = hwFactory.ipadProduction();
/* 平板功能配置 */
hwIpad.learn();
hwIpad.music();
PhoneProduction hwPhone = hwFactory.phoneProduction();
/* 手机功能配置 */
hwPhone.call();
hwPhone.paly();
/* 生产苹果系列产品 包括平板和手机 同上*/
}
}