
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
工厂模式是目前大多数软件开发程序员都在学习和使用的一种软件设计模式,而本文我们就通过案例分析来简单了解一下,工厂方法模式和抽象工厂模式的区别。
一、工厂方法模式
1、描述
工厂方法模式是对简单工厂模式的抽象提取。有一个抽象的Factory类(可以是抽象类和接口),这个类将不再负责具体的产品生产,而是只制定一些规范,具体的生产工作由其子类去完成。在这个模式中,工厂类和产品类往往可以依次对应。即一个抽象工厂对应一个抽象产品,一个具体工厂对应一个具体产品,这个具体的工厂就负责生产对应的产品。
2、适用性
相对于简单工厂模式,工厂方法模式在系统增加新的产品时只需要添加具体产品类和对应的具体工厂类,无须对原工厂进行任何修改,满足开闭原则;
3、实现逻辑
抽象产品类:工厂类所创建的所有对象的超类,它负责描述所有实例所共有的公共接口。定义产品的规范,描述了产品的主要特性和功能。
具体产品类:实现或者继承抽象产品的子类;是工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。在工厂方法模式中某具体产品有专门的具体工厂创建,它们之间往往一一对应。
抽象工厂类:是工厂方法模式的核心,与应用程序无关。任何在模式中创建的对象的工厂类必须实现这个接口。制定具体工厂类的规范。
具体工厂类:主要是实现抽象工厂中的抽象方法,完成具体产品的创建。
二、抽象工厂模式
1、描述
抽象工厂模式就是在工厂方法模式的抽象工厂类中规范多个同类产品。通俗一点来讲,抽象工厂模式就是工厂的工厂方法模式。
工厂方法模式是针对一个产品系列的,而抽象工厂模式是针对多个产品系列的,即工厂方法模式是一个产品系列一个工厂,而抽象工厂模式是多个产品系列一个工厂类。
工厂模式中的每一个形态都是针对一定问题的解决方案,工厂方法针对的是多个产品系列结构;而抽象工厂模式针对的是多个产品族结构,一个产品族内有多个产品系列。
2、适用性
抽象工厂模式可以看作工厂方法模式的扩展,在一个系统要由多个产品系列中的一个来配置时,工厂方法模式无法满足,这时就可以使用抽象工厂模式。这样介绍有点晦涩,下面通过实战代码的例子很好理解。
3、实现逻辑
抽象产品类:工厂类所创建的所有对象的超类,它负责描述所有实例所共有的公共接口。定义产品的规范,描述了产品的主要特性和功能。
具体产品类:实现或者继承抽象产品的子类;是工厂模式的创建目标,所有创建的对象都是这个具体类的实例。在抽象工厂模式中某具体产品有专门的具体工厂类创建,但不同于工厂方法模式,它们之间是一对多的关系,及一个具体工厂类可以创建多个具体产品类。
抽象工厂类:是工厂方法模式的核心,与应用程序无关。任何在模式中创建的对象的工厂类必须实现这个接口。制定具体工厂类的规范。
具体工厂类:主要是实现抽象工厂中的抽象方法,完成具体产品的创建。可供客户端直接调用某一方法创建出具体产品实例。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。