[设计模式]创建型模式

定义

创建型模式抽象了实例化的过程。它将系统与它的对象创建、结合、表示的方式分离

创建型模式都会将关于该系统使用哪些具体的类的信息封装起来。

在软件工程中,创建型模式是处理对象创建的设计模式,试图根据实际情况使用合适的方式创建对象。 基本的对象创建方式可能会导致设计上的问题,或增加设计的复杂度。创建型模式通过以某种方式控制对象的创建来解决问题。

主导思想

1、将系统使用的具体类封装起来。 2、隐藏这些具体类的实例创建和结合的方式。

分类

创建型模式又分为对象创建型模式类创建型模式。对象创建型模式处理对象的创建,类创建型模式处理类的创建。

对象创建型模式把对象创建的一部分推迟到另一个对象中。(代表模式:单例模式建造者模式原型模式抽象工厂模式

类创建型模式将它对象的创建推迟到子类中。(代表模式:工厂方法模式

应用

现代软件工程更加依赖对象的组合,而不是类的继承,强调从硬编码的行为转变到定义一组基本行为来组合成复杂的行为。

硬编码的行为不够灵活,因为如果想要改变设计的一部分,需要通过重写或者重新实现才能完成。

另外,硬编码没有提高重用性,而且难以跟踪错误。由于这些原因,创建型模式比硬编码的行为更有用。

创建型模式使设计变得更灵活,提供了不同的方式,从代码中移除了对需要实例化的具体类的引用。换句话说,这些模式增强了对象和类之间的独立性。

在以下情况中,可以考虑应用创建型模式:

  • 一个系统需要和它的对象和产品的创建相互独立。
  • 一组相关的对象被设计为一起使用。
  • 隐藏一个类库的具体实现,仅暴露它们的接口。
  • 创建独立复杂对象的不同表示。
  • 一个类希望它的子类实现它所创建的对象。
  • 类的实例化在运行时才指定。
  • 一个类只能有一个实例,而且这个实例能在任何时候访问到。
  • 实例应该能在不修改的情况下具有可扩展性。

代表模式

单例模式 (Singleton Pattern)

工厂方法模式 (Factory Method Pattern)

抽象工厂模式 (Abstract Factory Pattern)

建造者模式 (Builder Pattern)

原型模式 (Prototype Pattern)

推荐阅读

本文属于 设计模式系列

参考资料

《大话设计模式》 《HeadFirst设计模式》

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云瓣

ES6的一些常用特性

由于公司的前端业务全部基于ES6开发,于是给自己开个小灶补补ES6的一些常用特性。原来打算花两天学习ES6的,结果花了3天才勉强过了一遍阮老师的ES6标准入门,...

3348
来自专栏iKcamp

React 深入系列1:React 中的元素、组件、实例和节点

文:徐超,《React进阶之路》作者 授权发布,转载请注明作者及出处 ---- React 深入系列,深入讲解了React中的重点概念、特性和模式等,旨在...

3628
来自专栏牛肉圆粉不加葱

Spark Task 内存管理(on-heap&off-heap)

在之前的文章中(Spark 新旧内存管理方案(上)及Spark 新旧内存管理方案(下)),我从粗粒度上对 Spark 内存管理进行了剖析,但我们依然会有类似这样...

841
来自专栏Java架构师历程

java基础复习

Java是一个支持并发、基于类和面向对象的计算机编程语言。下面列出了面向对象软件开发的优点:

972
来自专栏Google Dart

AngularDart4.0 指南- 模板语法二 顶

Class绑定语法类似于属性(property)绑定。 以前缀类开始,可选地跟一个点(.)和一个CSS类的名字替代括号内的元素属性:[class.class-n...

612
来自专栏吴伟祥

javadoc 原

javadoc是Sun公司提供的一个技术,它从程序源代码中抽取类、方法、成员等注释形成一个和源代码配套的API帮助文档。也就是说,只要在编写程序时以一套特定的标...

653
来自专栏LIN_ZONE

PHP 反射的简单使用

794
来自专栏java一日一条

Java反射在JVM的实现

反射使程序代码能够接入装载到JVM中的类的内部信息,允许在编写与执行时,而不是源代码中选定的类协作的代码,是以开发效率换运行效率的一种手段。这使反射成为构建灵活...

663
来自专栏技术博客

Knockout.Js官网学习(value绑定)

value绑定是关联DOM元素的值到view model的属性上。主要是用在表单控件<input>,<select>和<textarea>上。

441
来自专栏Porschev[钟慰]的专栏

Jquery 事件冒泡

什么是JS事件冒泡?: 在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此...

1977

扫码关注云+社区