当前位置:首页 > 后端开发 > 正文内容

把握规划形式之工厂办法形式

邻居的猫1个月前 (12-09)后端开发1118

工厂办法形式

工厂办法形式(Factory Method Pattern)是一种创立型规划形式,它界说了一个用于创立方针的接口,但由子类决议要实例化的详细类。工厂办法形式将方针的创立托付给子类,然后完结了类的实例化推迟高内聚低耦合的方针。

工厂办法形式的结构

工厂办法形式一般包含以下几个人物:

  1. Product(产品接口或笼统类)
  • 界说产品的公共接口,一切详细产品都应完结这个接口。
  1. ConcreteProduct(详细产品)
  • 完结产品接口,供给详细的完结。
  1. Creator(笼统工厂类)
  • 声明工厂办法,用于回来一个Product方针。这个类一般是一个笼统类或接口,界说了产品的创立进程。
  1. ConcreteCreator(详细工厂类)
  • 完结工厂办法,担任实例化详细的产品方针。不同的详细工厂会创立不同的详细产品。

工厂办法形式的优缺陷

长处

  • 解耦:客户端不需求关怀详细产品的创立进程,只需调用工厂办法获取产品,降低了体系的耦合度。
  • 统一管理方针创立: 工厂形式能够统一管理方针的创立进程,包含初始化、装备等操作,使得创立进程愈加灵敏和可控。
  • 契合开闭准则:新增产品时,只需求创立新的详细产品类和工厂类,不需求修正现有代码。
  • 灵敏性:经过承继和多态,子类能够决议创立哪种详细产品。

缺陷

  • 类的数量添加:为了支撑不同类型的产品,有必要创立多个详细工厂类,类的数量会添加。
  • 或许添加体系杂乱性:比简略工厂形式要杂乱,或许会使得体系变得愈加难以了解和保护。

工厂办法形式的示例代码

假定咱们有一个轿车出产工厂,工厂能够出产不同类型的轿车,例如BMW和Audi。

类图

image

示例代码

产品接口和产品类

public interface Car {
    void drive();
}

public class BMW implements Car {
    @Override
    public void drive() {
        System.out.println("Driving a BMW car.");
    }
}

public class Audi implements Car {
    @Override
    public void drive() {
        System.out.println("Driving an Audi car.");
    }
}

工厂相关的类


public abstract class CarFactory {
    // 工厂办法,回来详细产品
    public abstract Car createCar();
}


public class BMWFactory extends CarFactory {
    @Override
    public Car createCar() {
        return new BMW(); // 回来详细的BMW方针
    }
}

public class AudiFactory extends CarFactory {
    @Override
    public Car createCar() {
        return new Audi(); // 回来详细的Audi方针
    }
}

测验代码

public class Client {
    public static void main(String[] args) {
        // 运用工厂办法创立轿车
        CarFactory factory = new BMWFactory(); // 经过BMW工厂创立BMW轿车
        Car car = factory.createCar();
        car.drive(); // 输出:Driving a BMW car.

        factory = new AudiFactory(); // 经过Audi工厂创立Audi轿车
        car = factory.createCar();
        car.drive(); // 输出:Driving an Audi car.
    }
}

测验成果

Driving a BMW car.

Driving an Audi car.

工厂办法形式的变体

除了传统的工厂办法形式,有时在实践运用中还会运用一些变体:

  • 笼统工厂形式:如果有多个产品族(即多个系列的产品),能够经过笼统工厂形式来完结每个工厂担任创立一组相关产品。与工厂办法形式的差异在于,工厂办法形式一般只触及一个产品类的创立,而笼统工厂形式处理多个产品类的创立。

  • 工厂办法和单例形式结合:工厂办法能够和单例形式结合运用,保证工厂实例和产品实例的唯一性。

总结

工厂办法形式是一种创立型规划形式,经过将方针的创立进程托付给子类来完结灵敏的产品创立。比较于简略工厂形式,工厂办法形式愈加灵敏,契合开闭准则,适用于需求扩展产品品种的场景,但也或许导致类数量添加。

工厂类供给某个产品的工厂办法来出产产品,躲藏方针的创立进程,使客户端无需了解方针的详细创立逻辑,使得客户端代码与详细类的解耦,减少了依靠,更简略保护和扩展。

  • 方针的详细创立逻辑能够运用反射动态署理或许结合其他创立型规划形式来完结方针的实例化;

  • 引入了“中心者”和面向笼统编程运用了多态的特性,起到了解耦的效果;

  • 运用者(客户端)面向笼统(接口、笼统类)编程,而不直接依靠于详细产品类。

image

什么是规划形式?

单例形式及其思维

规划形式--原型形式及其编程思维

把握规划形式之生成器形式

把握规划形式之简略工厂形式

超有用的SpringAOP实战之日志记载

2023年下半年软考考试重磅音讯

经过软考后却收取不到实体证书?

计算机算法规划与剖析(第5版)

Java全栈学习道路、学习资源和面试题一条龙

软考证书=职称证书?

软考中级--软件规划师毫无保留的备考共享

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=167

分享给朋友:

“把握规划形式之工厂办法形式” 的相关文章

第72篇 跨域的简略介绍

第72篇 跨域的简略介绍

1.跨域的相关概念 1.1 什么是跨域 同源战略是由 Netscape 提出的闻名安全战略,是浏览器最中心、根本的安全功用,它约束了一个源(origin)中加载文本或许脚本与来自其他源(origin)中资源的交互办法,所谓的同源便是指协议、域名、端口相同。 当浏览器履行一个脚本时会查看是否同源,只需...

python免费,免费资源与学习路径

python免费,免费资源与学习路径

当然可以,我随时准备为您提供免费的Python编程帮助!您有任何问题或需要帮助的地方,请随时告诉我。Python编程语言入门指南:免费资源与学习路径Python作为一种简单易学、功能强大的编程语言,已经成为全球范围内最受欢迎的编程语言之一。对于想要学习Python的新手来说,以下是一篇详细的入门指南...

java和python,编程语言的选择与未来展望

1. 用途: Java:通常用于企业级应用、Android 应用开发、大型系统开发等。 Python:广泛用于数据分析、机器学习、Web 开发、自动化脚本等。2. 语法: Java:语法相对严格,需要明确声明变量类型,并且使用分号作为语句的结束符。 Python:语法简洁明了...

delphi为什么没人用了,Delphi为何逐渐淡出开发者视野?

Delphi 是一种编程语言和集成开发环境(IDE),由 Borland(现在的 Embarcadero Technologies)开发,主要面向 Windows 平台。它在 1990 年代和 2000 年代初期非常流行,尤其是在桌面应用开发领域。随着时间的推移,Delphi 的使用逐渐减少,原因可...

计算机二级c语言答案,计算机二级C语言考试答案解析

计算机二级c语言答案,计算机二级C语言考试答案解析

你可以通过以下资源获取计算机二级C语言的真题及答案:1. 历年计算机二级C语言真题及答案: 这里提供了历年计算机二级C语言的真题及答案,可以在线评测。2. C语言二级题库带答案 解析: 该文档包含程序设计题的题目、程序(含空)以及答案,适合进行练习。3. 2023年全国计...

tfboys加油go,歌曲背景

tfboys加油go,歌曲背景

TFBOYS(全称“THE FIGHTING BOYS”)是中国内地男子演唱组合,由王俊凯、王源和易烊千玺三位成员组成。该组合于2013年8月6日正式出道,经纪公司为北京时代峰峻文化艺术发展有限公司。在出道后,TFBOYS迅速积累了大量人气,并成为亚洲超人气天团,代表了中国新生代组合的领军人物。他们...