创建型模式(Creational Pattern):关注于对象的创建过程,将对象的创建与使用分离,使得同一个构建过程可以创建不同的表示
创建型模式包括以下五种:
- 工厂方法模式(Factory Method Pattern):定义一个创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
- 例如:我们需要一辆汽车,可以直接从工厂里面提货,而不用管这辆汽车是怎么做出来的,以及这个汽车里面的具体实现。而至于需要哪个牌子的汽车,就到哪个牌子的工厂。
- 抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂允许客户端使用抽象的接口来创建一组相关的产品,而不需要知道或关心实际生产出的具体产品是什么,从而使客户端和具体产品解耦。
- 例如:对于一个家庭来说,可能有商务女装、商务男装、时尚女装、时尚男装,都是成套的,即一系列具体产品。假设一种情况,在我们自己的家中,某一个衣柜(具体工厂)只能存放某一种这样的衣服(成套,一系列具体产品),每次拿这种成套的衣服时也自然要从这个衣柜中取出了。用面向对象的思想去理解,所有的衣柜(具体工厂)都是衣柜类的(抽象工厂)某一个,而每一件成套的衣服又包括具体的上衣(某一具体产品),裤子(某一具体产品),这些具体的上衣其实也都是上衣(抽象产品),具体的裤子也都是裤子(另一个抽象产品)。
- 单例模式(Singleton Pattern):保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式可以确保系统中一个类只有一个实例,从而避免对资源的多重占用,同时也可以节省系统资源。
- 建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式可以将复杂对象的创建过程抽象出来,使这个抽象过程可以创建出不同表现形式的对象。
- 例如:我们想要买一台电脑,但是电脑有很多种配置和外观,我们可以找一个电脑店(指挥者),让他根据我们的需求和预算,安排电脑工厂(建造者)为我们组装一台电脑(产品)。电脑店会指导电脑工厂按照一定的顺序和标准来生产电脑的各个部件(CPU、内存、硬盘、显示器等),最后将这些部件组合成一台完整的电脑交给我们。
- 原型模式(Prototype Pattern):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式可以在运行时动态地复制对象,而不需要知道它们的具体类别。
- 例如:我们想要制作一些相似但又有细微差别的玩偶,我们可以先制作一个原型玩偶(原型对象),然后根据需要对其进行修改或添加装饰(克隆并修改),从而得到新的玩偶(克隆对象)。