创建型设计模式详解:通俗易懂的例子 2024-08-27 作者 C3P00 在软件设计中,创建型设计模式帮助我们在复杂的系统中更好地管理对象的创建过程。以下是五种常用的创建型设计模式的通俗易懂的例子。 抽象工厂模式(Abstract Factory) 解析:抽象工厂模式提供了一种创建一系列相关或相互依赖对象的方式,而不需要指定具体的类。可以将其理解为一个“工厂的工厂”:它定义了一个抽象接口,具体的工厂类实现这个接口,负责创建一组相关的对象。 通俗例子:想象你在一个家具店里,你可以选择“现代风格”或“古典风格”的家具套装。如果你选择“现代风格”,工厂就会给你一套现代风格的沙发、茶几和灯具;如果选择“古典风格”,工厂则会提供一套古典风格的家具。这就是抽象工厂模式的工作方式:不同的工厂生成不同风格的家具,但你只需要决定想要哪种风格的套装。 速记句:抽象工厂是创建相关对象的工厂的工厂。 构建器模式(Builder) 解析:构建器模式将一个复杂对象的构建过程与它的表示分离,允许相同的构建过程生成不同的表示。这种模式特别适用于那些具有多种配置方式的对象构建。 通俗例子:你去快餐店点餐,服务员会问你要哪种面包、哪种肉类、要不要奶酪和蔬菜。这些步骤总是一样的,但最终你可以通过不同的选择组合出一份符合自己口味的汉堡。构建器模式就像这个点餐过程一样,通过不同的步骤来灵活定制产品。 速记句:构建器模式分离了对象构建过程与表示,从而允许灵活定制。 工厂方法模式(Factory Method) 解析:工厂方法模式定义了一个接口用于创建对象,但具体的类实例化过程推迟到子类实现。 通俗例子:假设你是一个玩具制造商,你生产的玩具有汽车、飞机和船。每种玩具的生产方式不同,但你可以通过一个通用的“玩具工厂”来调用各自的生产方法。具体生产哪种玩具,这个决定权交给了“玩具工厂”的子类,这样你不需要每次都重新编写生产逻辑。 速记句:工厂方法将对象创建的决定权交给子类。 原型模式(Prototype) 解析:原型模式通过复制一个已经存在的实例来创建新的对象,而不是通过类实例化来生成。 通俗例子:想象你在一场派对上,想要复制一份你非常喜欢的甜点食谱。你不需要从零开始重新写这份食谱,只要把现有的食谱复制一份即可,然后你还可以对它进行一些小的调整,比如加点巧克力。这就是原型模式的工作方式:通过复制已有的对象来创建新对象。 速记句:原型模式通过复制现有对象来创建新对象。 单例模式(Singleton) 解析:单例模式确保一个类只有一个实例,并提供一个全局的访问点来获取这个实例。 通俗例子:假设你在一个小镇上,镇上只有一个供水站,所有居民都从这个供水站取水。这个供水站就是单例模式的例子:它确保整个镇子上只有一个供水站,并且所有人都能通过这个唯一的供水站获取水资源。 速记句:单例模式保证全局只有一个实例。 总结 创建型设计模式提供了多种在软件系统中管理对象创建的方式。抽象工厂模式用于创建一系列相关对象,构建器模式则将对象的构建与表示分离。工厂方法模式允许子类决定对象的实例化,原型模式通过复制现有对象来创建新对象,而单例模式则确保全局只有一个实例。这些模式的合理运用可以极大提升代码的灵活性与可维护性。 参考文献 Gamma, E. , Helm, R., Johnson, R., & Vlissides, J. (1994). ✅Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley. Freeman, E. , & Robson, E. (2004). ✅Head First Design Patterns. O’Reilly Media. Fowler, M. (2002). ✅Patterns of Enterprise Application Architecture. Addison-Wesley.
在软件设计中,创建型设计模式帮助我们在复杂的系统中更好地管理对象的创建过程。以下是五种常用的创建型设计模式的通俗易懂的例子。
抽象工厂模式(Abstract Factory)
解析:抽象工厂模式提供了一种创建一系列相关或相互依赖对象的方式,而不需要指定具体的类。可以将其理解为一个“工厂的工厂”:它定义了一个抽象接口,具体的工厂类实现这个接口,负责创建一组相关的对象。
通俗例子:想象你在一个家具店里,你可以选择“现代风格”或“古典风格”的家具套装。如果你选择“现代风格”,工厂就会给你一套现代风格的沙发、茶几和灯具;如果选择“古典风格”,工厂则会提供一套古典风格的家具。这就是抽象工厂模式的工作方式:不同的工厂生成不同风格的家具,但你只需要决定想要哪种风格的套装。
速记句:抽象工厂是创建相关对象的工厂的工厂。
构建器模式(Builder)
解析:构建器模式将一个复杂对象的构建过程与它的表示分离,允许相同的构建过程生成不同的表示。这种模式特别适用于那些具有多种配置方式的对象构建。
通俗例子:你去快餐店点餐,服务员会问你要哪种面包、哪种肉类、要不要奶酪和蔬菜。这些步骤总是一样的,但最终你可以通过不同的选择组合出一份符合自己口味的汉堡。构建器模式就像这个点餐过程一样,通过不同的步骤来灵活定制产品。
速记句:构建器模式分离了对象构建过程与表示,从而允许灵活定制。
工厂方法模式(Factory Method)
解析:工厂方法模式定义了一个接口用于创建对象,但具体的类实例化过程推迟到子类实现。
通俗例子:假设你是一个玩具制造商,你生产的玩具有汽车、飞机和船。每种玩具的生产方式不同,但你可以通过一个通用的“玩具工厂”来调用各自的生产方法。具体生产哪种玩具,这个决定权交给了“玩具工厂”的子类,这样你不需要每次都重新编写生产逻辑。
速记句:工厂方法将对象创建的决定权交给子类。
原型模式(Prototype)
解析:原型模式通过复制一个已经存在的实例来创建新的对象,而不是通过类实例化来生成。
通俗例子:想象你在一场派对上,想要复制一份你非常喜欢的甜点食谱。你不需要从零开始重新写这份食谱,只要把现有的食谱复制一份即可,然后你还可以对它进行一些小的调整,比如加点巧克力。这就是原型模式的工作方式:通过复制已有的对象来创建新对象。
速记句:原型模式通过复制现有对象来创建新对象。
单例模式(Singleton)
解析:单例模式确保一个类只有一个实例,并提供一个全局的访问点来获取这个实例。
通俗例子:假设你在一个小镇上,镇上只有一个供水站,所有居民都从这个供水站取水。这个供水站就是单例模式的例子:它确保整个镇子上只有一个供水站,并且所有人都能通过这个唯一的供水站获取水资源。
速记句:单例模式保证全局只有一个实例。
总结
创建型设计模式提供了多种在软件系统中管理对象创建的方式。抽象工厂模式用于创建一系列相关对象,构建器模式则将对象的构建与表示分离。工厂方法模式允许子类决定对象的实例化,原型模式通过复制现有对象来创建新对象,而单例模式则确保全局只有一个实例。这些模式的合理运用可以极大提升代码的灵活性与可维护性。
参考文献