创建型模式总结(2.x)
顾名思义,创建型模式的聚焦点在如何创建对象能够将对象的创建与使用最大化的分离从而降低系统的耦合度。
创建型模式可分为:
- 单例模式:一个类只能有一个实例对象
- 工厂模式:
- 简单工厂模式:聚焦单个产品种类的创建(客户端无法扩展)
- 工厂方法模式:聚焦单个产品种类的创建(客户端可自扩展具体的产品)
- 抽象工厂模式:聚焦多个产品种类的创建(客户端可自扩展固定产品种类下的产品)
- 原型模式:创建一个对象,然后通过复制的方式创建其他对象
- 建造者模式:不仅考虑创建对象,还需要给对象的属性赋值
【工厂模式举例】:
假如生产一种饮料类,其中有可乐,雪碧,橙汁三种饮料。简单工厂模式的设定就是用户只有这三种饮料可选。
而工厂方法模式就是用户可在饮料类的基础上可以再扩展出茶π,脉动这样的饮料。
对于抽象工厂来说,不满足于饮料类下各种饮料的扩展,而是和饮料类平级的比如食物类,球类这样的类别创建。
那么对于用户来说,可以使用饮料类,食物类,球类,也可类的基础上实例化不同的对象,比如饮料类可以扩展出尖叫,乐虎这样的饮料,食物类和球类除了服务端定制的之外,也可自行扩展。上述所说的多个产品种类就是指向饮料类,食物类,球类...等等这一级别。
【抽象工厂的限制】:抽象工厂的多个产品是在服务端定制的,也就是说,客户端可以实现多个产品种类下的具体产品创建,但是无法扩展更多的产品种类。
-----------------------------------------------------------------------------------------------------------------------2019.8.13
创建型模式总结(2.x)的更多相关文章
- 工厂方法模式——创建型模式02
1. 简单工厂模式 在介绍工厂方法模式之前,先介绍一下简单工厂模式.虽然简单工厂模式不属于GoF 23种设计模式,但通常将它作为学习其他工厂模式的入门,并且在实际开发中使用的也较为频繁. (1 ...
- 单例模式——创建型模式01
1. 名称 单例模式(Singleton Pattern):确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类.单例模式是一种对象创建型模式. 2. 问题 ...
- C#面向对象设计模式纵横谈——2.Singleton 单件(创建型模式)
一:模式分类 从目的来看: 创建型(Creational)模式:负责对象创建. 结构型(Structural)模式:处理类与对象间的组合. 行为型(Behavioral)模式:类与对象交互中的职责分配 ...
- Java设计模式之创建型模式
创建型模式分为五类:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式 一.工厂方法模式:接口-实现类.工厂类
- 第26章 创建型模式大PK
26.1 工厂方法模式 VS 建造者模式 26.1.1 按工厂方法建造超人 (1)产品:两类超人,成年超人和未成年超人. (2)工厂:这里选择简单工厂 [编程实验]工厂方法建造超人 //创建型模式大P ...
- 创建型模式(前引)简单工厂模式Simple Factory
一引出的原因(解决下面的问题) 简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式. 在简单工厂模式 ...
- 设计模式之美:Creational Patterns(创建型模式)
创建型模式(Creational Patterns)抽象了对象实例化过程. 它们帮助一个系统独立于如何创建.组合和表示它的那些对象. 一个类创建型模式使用继承改变被实例化的类. 一个对象创建型模式将实 ...
- 设计模式学习之建造者模式(Builder,创建型模式)(6)
假如我们需要建造一个房子,并且我们也不知道如何去建造房子,所以就去找别人帮我们造房子 第一步: 新建一个房子类House,里面有房子该有的属性,我们去找房子建造者接口HouseBuilder,我们要建 ...
- 设计模式学习之原型模式(Prototype,创建型模式)(5)
通过序列化的方式实现深拷贝 [Serializable] public class Person:ICloneable { public string Name { get; set; } publi ...
- 设计模式学习之单例模式(Singleton,创建型模式)(4)
假如程序中有一个Person类,我的需求就是需要在整个应用程序中只能new一个Person,而且这个Person实例在应用程序中进行共享,那么我们该如何实现呢? 第一步: 新建一个Person类,类中 ...
随机推荐
- Apex 获取真正的IP地址
代码如下 declare l_ip varchar2(15); begin if OWA_UTIL.GET_CGI_ENV('X-FORWARDED-FOR') is not null then l_ ...
- python + selenium webdriver 复合型css样式的元素定位方法
<div class="header layout clearfix"></div> 当元素没有id,没有name,没有任何,只有一个class的时候,应该 ...
- c排序
#pragma once//如果写头文件 放置头文件重复包含 #include<stdio.h> //定义类型 结构体类型定义 //宏定义 #define //函数申明 void prin ...
- idea中pom如何加载jar包依赖
1.需求分析 在特定需求的情况下,idea需要加载jar包,那么如何在idea中正确的配置jar依赖呢?今天博主就这个问题给大伙讲解下,希望对大伙有所帮助 2.实现方案①在工程src目录下新建l ...
- springbootl用thymeleaf整合htm
pom文件: <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...
- tf.name_scope() 和 tf.variable_scope() 的用法和玄机
https://my.oschina.net/liusicong/blog/1593467
- 怎样使用U盘安装Windows系统
准备工作 一个8G及以上的U盘: 软碟通UltraISO,下载地址,非免费,但试用就够了: 系统镜像,推荐去MSDN下载: 安装过程 利用U盘制作启动盘,准备好上述的东西,然后开始制作启动盘: 注意: ...
- 云原生生态周报 Vol. 17 | Helm 3 发布首个 beta 版本
本周作者 | 墨封.衷源.元毅.有济.心水 业界要闻 1. Helm 3 首个 beta 版本 v3.0.0-beta.1 发布 该版本的重点是完成最后的修改和重构,以及移植其他 Helm 2 特性. ...
- 2019dx#9
Solved Pro.ID Title Ratio(Accepted / Submitted) 1001 Rikka with Quicksort 25.85%(38/147) 1002 Ri ...
- codeforces 733D Kostya the Sculptor(贪心)
Kostya is a genial sculptor, he has an idea: to carve a marble sculpture in the shape of a sphere. K ...