抽象工厂模式
抽象工厂模式属于创建型模式的一种,它和工厂模式的意图都是去解决接口选择的问题,但是抽象工厂更像一个中心工厂,去创建其他的工厂。
常见的业务场景,在Windows中,每行的结尾是\n\r,Unix每行的结尾只有\n,不同操作系统相同的IDE,同样的操作显示有着不同的差异,需要做兼容处理。
简单的代码实现
创建手机和路由器功能接口
//手机接口类
public interface phoneProduct{
void call();
void sendSMS();
}
//路由器接口类
public interface RouterProduct{
void openWIFI();
}
创建不同品牌的实现类
//小米手机实现类
public class XIAOMIPhone implements phoneProduct{
public void call(){
System.out.println("XIAOMI打电话");
}
public void sendSMS(){
System.out.println("XIAOMI发短信");
}
}
//华为手机实现类
public class HUAWEIPhone implements phoneProduct{
public void call(){
System.out.println("HUAWEI打电话");
}
public void sendSMS(){
System.out.println("HUAWEI发短信");
}
}
//小米路由器实现类
public class XIAOMIRouter implements RouterProduct{
public void openWiFi(){
System.out.println("XIAOMI路由器联网");
}
}
//华为路由器实现类
public class HUAWEIRouter implements RouterProduct{
public void openWiFi(){
System.out.println("HUAWEI路由器联网");
}
}
创建工厂接口实现类
//抽象工厂类
public interface ProductFactory{
PhoneProduct phoneProduct();
RouterProduct routerProduct();
}
//小米工厂实现类
public class XIAOMIFactory implement ProductFactory{
public PhoneProduc phoneProduct(){
return new XIAOMIPhone();
}
public RouterProduct routerProduct(){
return new XIAOMIRouter();
}
}
//华为工厂实现类
public class HUAWEIFactory implement ProductFactory{
public PhoneProduc phoneProduct(){
return new HUAWEIPhone();
}
public RouterProduct routerProduct(){
return new HUAWEIRouter();
}
}
总结:在功能方面,抽象工厂更加倾向于解决一个产品族的问题,它满足了开闭原则,单一职责,解耦的这些优点,但是随这业务的拓展,可能会造成类实现上的复杂度,此时需要结合其他设计模式或者代理类以及自动加载来进行扬长避短了。
抽象工厂模式:产品族与跨平台兼容实例
本文介绍了抽象工厂模式如何解决接口选择问题,通过创建小米和华为手机及路由器的实例,展示如何使用抽象工厂创建产品家族,并针对操作系统差异进行兼容处理。同时,探讨了其优点与扩展挑战。
2171

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



