面试官:小伙子,够了够了,一个工厂模式你都在这说半个小时了! (2)

另外抽象化工厂、可以将产品的服务化功能集成在抽象工厂,并且内置构造实例的抽象方法。那么所有的拓展产品的工厂类都可以继承实现对应的构造方法和功能。

// sever public interface Product{ void features(); //定义统一的功能 } public class Product1 implements Product {/*实现统一接口方法、以及自定义方法*/} public class MoreProducts implements Product {/*实现统一接口方法、以及自定义方法*/} /*工厂方法*/ public abstract class AbastractFactory { Product create(); //定义统一构造器 void sever(){/*相应的统一服务功能*/} } public class Product1Factory implements AbstractFactory {/*实现构造器*/} public class MoreProductsFactory extends AbstractFactory {/*实现构造器*/}

优势:

将产品解耦,并且每一个拓展产品都有相应的工厂类实现对应的构造实例以及服务功能

缺点:

易造成工厂的冗余、拓展产品过多时出现工厂类增多。

抽象工厂模式

面试官:小伙子,够了够了,一个工厂模式你都在这说半个小时了!

解决方法:

在工厂方法模式的基础之上、在抽象工厂中不再单独创建统一的构造器,而是创建一类或者所有的拓展产品构造器。这样工厂类继承的时候只需要少了的继承就可以完成多个拓展产品的构造任务。

// sever public interface Product{ void features(); //定义统一的功能 } public class Product1 implements Product {/*实现统一接口方法、以及自定义方法*/} public class MoreProducts implements Product {/*实现统一接口方法、以及自定义方法*/} /*抽象工厂模式*/ public abstract class AbastractFactory { Product createProduct1(); //定义Product1构造器 Product createMoreProducts(); //定义MoreProducts构造器 void sever(){/*相应的统一服务功能*/} } public class ProductFactory extends AbstractFactory {/*实现对应构造器*/}

优点:

减少了工厂类的数量、避免冗余问题

最后

欢迎关注公众号:前程有光,领取一线大厂Java面试题总结+各知识点学习思维导+一份300页pdf文档的Java核心知识点总结!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wspfwz.html