设计模式分类

Introduction

根据目的和范围,设计模式可以分为五类。按照目的分为:创建设计模式,结构设计模式,以及行为设计模式。按照范围分为:类的设计模式,以及对象设计模式。下面分别介绍。

创建设计模式

创建设计模式(Creational patterns),用于创建对象时的设计模式。更具体一点,初始化对象流程的设计模式。当程序日益复杂时,需要更加灵活地创建对象,同时减少创建时的依赖。而创建设计模式就是解决此问题的一类设计模式。

结构设计模式

结构设计模式(Structural patterns),用于继承和接口时的设计模式。结构设计模式用于新类的函数方法设计,减少不必要的类定义,减少代码的冗余。

行为设计模式

行为设计模式(Behavioral patterns),用于方法实现以及对应算法的设计模式,同时也是最复杂的设计模式。行为设计模式不仅仅用于定义类的函数行为,同时也用于不同类之间的协议、通信。

类的设计模式

类的设计模式(Class patterns),用于类的具体实现的设计模式。包含了如何设计和定义类,以及父类和子类的设计模式。

对象设计模式

对象设计模式(Object patterns),用于对象的设计模式。与类的设计模式不同,对象设计模式主要用于运行期对象的状态改变、动态行为变更等。

为什么会重构?

重构通常是由于现有程序的框架不能很好的适应新需求,虽然可以通过硬编码(hardcode)或者绕过(bypass)的方式来解决一个新需求,但这并不是长久之计。当新需求越来越多时,现在程序会越来越冗余,导致最后的不可维护。

架构和设计模式的区别

相比架构(frameworks),设计模式是一些抽象的组成架构的元素,且更为灵活通用。 架构更适合解决具体问题,使用架构构建应用程序将更为快捷,不过相比设计模式,架构牺牲了灵活性。

Summary

本文介绍了设计模式的分类,后面我们将分别介绍各种设计模式。

原文发布于微信公众号 - php(phpdaily)

原文发表时间:2016-06-15

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Linyb极客之路

java代码设计的6+1大原则

1.开闭原则(Open Close Principle) 定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。 开放-封闭原则的意思就是说,你...

723
来自专栏一名叫大蕉的程序员

慢SQL,压垮团队的最后一根稻草No.92

先说结论,我支持将逻辑写在 Java 等应用系统中。 背景:今天只讨论一种应用模式,就是最普遍的,前端实时调用后端web服务,服务端经过DB的增删改查作出响应的...

3466
来自专栏不会写文章的程序员不是好厨师

Spring Retry 学习记录

在很多场景中,我们需要“重试”,重试意味着反复执行一段代码直至成功,或者重试多次无果后标记失败。“重试”的出发点有可能是为了保持状态的一致,也有可能是为了容忍被...

652
来自专栏Golang语言社区

从Baa开发中总结Go语言性能渐进优化

在Go生态已经有很多WEB框架,但感觉没有一个符合我们的想法,我们想要一个简洁高效的核心框架,提供路由,context,中间件和依赖注入,而且拒绝使用正则和反射...

4218
来自专栏进击的程序猿

The Clean Architecture in PHP 读书笔记(三)The Clean Architecture in PHP 读书笔记(三)

这5大原则最初是由Robert C. Martin提出,这些原则主要解决了下面两个问题:

702
来自专栏新智元

14张思维导图读懂 Python 编程核心知识体系

【新智元导读】本文主要涵盖了 Python 编程的核心知识,用14张思维导图说明问题。 本文来自ZOE | 数林觅风,作者小越酱,某医学院研二小硕一枚,热爱思维...

3417
来自专栏木木玲

设计模式 ——— 中介者模式

1683
来自专栏开源项目

码云推荐 | 基于 ActiveRecord 模式的 ORM 框架 Hare

hare是一个基于pymysql并运用 ActiveRecord 模式的 ORM 框架。 项目简介 hare是一个基于pymysql并运用ActiveRecor...

2936
来自专栏lgp20151222

SSH(struts2+hibernate+spring)总结

532
来自专栏smartguys

流程控制引擎组件化

在较大规模的业务系统中经常会有这样的模块,它按照一定的业务流程调用其它模块来实现一定的业务逻辑,我们姑且称之为流程引擎。这里称之为引擎有两层含义,一、突显其在...

1232

扫描关注云+社区