设计模式——创建型模式

简介: 设计模式——创建型模式

设计模式——创建型模式

设计模式分类

创建型

创建型模式设计到将对象实例化,这类模式都提供一个方法,将客户从所需实例化的对象中解耦

结构型

结构型模式可以让你把类或对象组合到更大的结构中。

行为型

行为型,都设计到类和对象如何交互及分配职责

创建型模式

创建型模式分类

解读:为什么将创建型模式分为直接和间接???

分类的主要依据是客户端想要一个具体的产品,是否通过了第三方。

直接:

如单例模式,如果客户端想要一个具体的产品,是直接类名.方法名,当然客户端不知道类里面的具体细节。

如:原型模式,如果客户端想要一个具体的产品,是直接调用克隆的方法。

间接:

如工厂方法模式,如果客户端想要一个具体的产品,他需要通过使用具体的工厂返回一个具体的产品。

如抽象工厂和工厂方法一致。也是通过使用具体的工厂。

如建造者,如果客户端想要一个具体的产品,他需要使用指挥者来指挥具体的建造者来创建具体的产品。

单例模式

保证一个类仅有一个实例,并提供一个访问它的全局访问点

图与代码的对应(图和代码皆引用自大话设计模式)


要点

1.单例模式通过将他的构造方法的访问修饰符设置为Private,是外部无法通过new的方式来获取他的一个对象,也就无法使用到类里面的方法。
2.通过声明唯一一个静态的私有的全局变量,并且声明一个Public ,Static的方法,使成为唯一一个外部能够访问的点。

3.这个公共的 静态的方法,保证了这个类只能被实例化一次。

可以看到在客户端如果想要一个产品是直接使用类名.方法名来获取

使用场景

例如:C#中通过命令按钮显示窗体的时候,会发生每点击一次就会有一个新的窗体冒出来,使用单例模式可以很好的解决这个问题。

原型模式

用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。

图和代码的对应(图和代码皆引用自大话设计模式)




要点

1.利用MeberWiseClone()这个方法进行克隆

2.ConcretePrototype1类重写了返回值为Prototype的Clone()方法
3.在客户端需要实例化一个具体原型类,在使用Clone()进行克隆,特别注意的是ConcretePrototype c1=(ConcretePrototype)p1.Clone()中存在一个强制转换(ConcretePrototype),为什么这儿需要一个强制转换呢?是因为在ConcretePrototype1中Clone()方法的返回值为Prototype,所以这儿需要一个强制转换。子类可以属于父类,但是父类不能属于子类。

应用场景

如写简历,首先需要自己制作一份简历,去投简历的时候,不可能只投一家公司,也不可能只有一份简历,你可能需要十几份简历。如果没有使用克隆技术,你就得手工一份一份的做,如果运用了克隆,像打印机之类的很快就能制作好成百上千的简历。

建造者模式

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

图和代码的对应(引用自大话设计模式)










要点

1.当客户端想要一个产品的时候,他需要调用指挥者,然后指挥者来调用具体的建造者。

这也就是将复杂对象的构建与它的便是分离,客户端不知建造的过程和细节。
2.可以通过修改具体建造者中的参数,达到同样的建造过程,但具有不同的表示,最后建造出来的产品不一样。

####应用场景

需要构建一个复杂的小人对象的时候,建造小人需要建造头部,手,脚。

工厂方法模式

定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类。

图和代码对应(引用自大话设计模式)



要点:

1.客户端想要得到一个产品,他需要使用具体的工厂来返回一个产品,也就是通过具体工厂中的方法来进行实例化。

2.客户端不知道具体的实现过程,和具体的产品类。

抽象工厂模式

提供一个创建一系列相关或相互依赖对象的结构,而无需指定他们具体的类。

图和代码的对应

要点

1.抽象工厂和工厂方法的主要区别是工厂方法主要应用与同一类产品,当需要增加多个产品族的时候就需要使用抽象工厂了。

2.抽象工厂同工厂方法的使用过程都是通过具体工厂来返回产品。

目录
相关文章
|
8月前
|
设计模式 Java 数据库连接
【设计模式】【创建型模式】工厂方法模式(Factory Methods)
一、入门 什么是工厂方法模式? 工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它定义了一个用于创建对象的接口,但由子类决定实例化哪个类。工厂方法模式使类的实例化延迟
259 16
|
8月前
|
设计模式 缓存 安全
【设计模式】【创建型模式】单例模式(Singleton)
一、入门 什么是单例模式? 单例模式是一种设计模式,确保一个类只有一个实例,并提供一个全局访问点。它常用于需要全局唯一对象的场景,如配置管理、连接池等。 为什么要单例模式? 节省资源 场景:某些对象创
319 15
|
8月前
|
设计模式 JavaScript Java
【设计模式】【创建型模式】原型模式(Prototype)
一、入门 什么是原型模式? 原型模式(Prototype Pattern)是一种创建型设计模式,它通过复制现有对象来创建新对象,而不是通过实例化类。 原型模式的核心是克隆(Clone),即通过复制现有
257 15
|
8月前
|
设计模式 Java Apache
【设计模式】【创建型模式】建造者模式(Builder)
一、入门 什么是建造者模式? 建造者模式(Builder Pattern)是一种创建型设计模式,用于逐步构建复杂对象。 它通过将对象的构建过程与表示分离,使得相同的构建过程可以创建不同的表示。 为什么
418 14
|
8月前
|
设计模式 Java 关系型数据库
【设计模式】【创建型模式】抽象工厂模式(Abstract Factory)
一、入门 什么是抽象工厂模式? 抽象工厂模式是一种创建型设计模式,它提供了一个接口,用于创建相关或依赖对象的家族,而不需要指定具体的类。 简单来说,抽象工厂模式是工厂方法模式的升级版,它能够创建一组相
303 14
|
10月前
|
设计模式 XML Java
设计模式觉醒系列(03)创建型模式的5个设计模式 | 一口气讲全讲透
本文详细介绍了设计模式中的创建型模式,包括建造者模式、原型模式、单例模式、工厂方法模式和抽象工厂模式。创建型模式关注对象的创建过程,隐藏了创建细节,以提高代码的可维护性和可扩展性。通过具体的实战demo和应用场景分析,展示了每种模式的特点和优势。例如,建造者模式适用于复杂对象的分步骤构建;原型模式通过复制对象实现高效复用;单例模式确保全局唯一实例;工厂方法模式和抽象工厂模式则提供了灵活的对象创建机制,支持多类型产品族的生产。这些模式在实际开发中能够简化客户端代码,提升系统灵活性和复用性。
|
设计模式 架构师 Java
设计模式之 5 大创建型模式,万字长文深剖 ,近 30 张图解!
设计模式是写出优秀程序的保障,是让面向对象保持结构良好的秘诀,与架构能力与阅读源码的能力息息相关,本文深剖设计模式之 5 大创建型模式。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
设计模式之 5 大创建型模式,万字长文深剖 ,近 30 张图解!
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是"将对象的创建与使用分离”。这样可以降低系统的耦合度,使用者不需要关注对象的创建细节。创建型模式分为5种:单例模式、工厂方法模式抽象工厂式、原型模式、建造者模式。
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: • 代理模式 • 适配器模式 • 装饰者模式 • 桥接模式 • 外观模式 • 组合模式 • 享元模式
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
|
设计模式 存储 负载均衡
【五】设计模式~~~创建型模式~~~单例模式(Java)
文章详细介绍了单例模式(Singleton Pattern),这是一种确保一个类只有一个实例,并提供全局访问点的设计模式。文中通过Windows任务管理器的例子阐述了单例模式的动机,解释了如何通过私有构造函数、静态私有成员变量和公有静态方法实现单例模式。接着,通过负载均衡器的案例展示了单例模式的应用,并讨论了单例模式的优点、缺点以及适用场景。最后,文章还探讨了饿汉式和懒汉式单例的实现方式及其比较。
【五】设计模式~~~创建型模式~~~单例模式(Java)

热门文章

最新文章