前言
抽象设计模式的实现是把简单工厂和工厂方法给结合运用的,可以实现某个品牌的一系列产品。
提示:以下是具体实现,个中滋味可以自己体会
一、前期的准备类
路由接口
public interface LuYou {
void show();
}
手机接口
public interface Phone {
void show();
}
华为品牌和小米品牌的手机以及路由的实现类
public class HuaWeiLuYou implements LuYou {
@Override
public void show() {
System.out.println("华为路由");
}
}
public class HuaWeiPhone implements Phone {
@Override
public void show() {
System.out.println("华为手机");
}
}
public class XiaoMiLuYou implements LuYou {
@Override
public void show() {
System.out.println("小米路由");
}
}
public class XiaoMiPhone implements Phone {
@Override
public void show() {
System.out.println("小米手机");
}
}
生产路由和生产手机以及产品的工厂接口
public interface LuYouFactory {
LuYou createLuYou();
}
public interface PhoneFactory {
Phone createPhone();
}
public interface ProductFactory {
LuYouFactory createLuYouFactory();
PhoneFactory createPhoneFactory();
}
华为品牌相应的实现工厂类
public class HuaWeiLuYouFactory implements LuYouFactory {
@Override
public LuYou createLuYou() {
return new HuaWeiLuYou();
}
}
public class HuaWeiPhoneFactory implements PhoneFactory {
@Override
public Phone createPhone() {
return new HuaWeiPhone();
}
}
public class HuaWeiProductFactory implements ProductFactory {
@Override
public LuYouFactory createLuYouFactory() {
return new HuaWeiLuYouFactory();
}
@Override
public PhoneFactory createPhoneFactory() {
return new HuaWeiPhoneFactory();
}
}
小米品牌相应的实现工厂类
public class XiaoMiLuYouFactory implements LuYouFactory {
@Override
public LuYou createLuYou() {
return new XiaoMiLuYou();
}
}
public class XiaoMiPhoneFactory implements PhoneFactory {
@Override
public Phone createPhone() {
return new XiaoMiPhone();
}
}
public class XiaoMiProductFactory implements ProductFactory {
@Override
public LuYouFactory createLuYouFactory() {
return new XiaoMiLuYouFactory();
}
@Override
public PhoneFactory createPhoneFactory() {
return new XiaoMiPhoneFactory();
}
}
二、测试类编写以及运行结果
public class Demo {
public static void main(String[] args) {
HuaWeiProductFactory huaWeiProductFactory = new HuaWeiProductFactory();
LuYouFactory luYouFactory = huaWeiProductFactory.createLuYouFactory();
LuYou luYou = luYouFactory.createLuYou();
luYou.show();
PhoneFactory phoneFactory = huaWeiProductFactory.createPhoneFactory();
Phone phone = phoneFactory.createPhone();
phone.show();
System.out.println("============");
XiaoMiProductFactory xiaoMiProductFactory = new XiaoMiProductFactory();
luYouFactory = xiaoMiProductFactory.createLuYouFactory();
luYou = luYouFactory.createLuYou();
luYou.show();
phoneFactory = xiaoMiProductFactory.createPhoneFactory();
phone = phoneFactory.createPhone();
phone.show();
}
}
运行结果如下:
华为路由
华为手机
============
小米路由
小米手机
总结
这样就可以实现一个品牌的系列产品了,添加新的产品的话就需要在产品工厂接口中添加新的产品的工厂接口,随后添加上对应的实现类即可。