现如今,设计模式已经较前两年失去了一些关注度和热度。人们已经把目光投向那些革命性的高科技产品和技术,诸如:iPhone,iPad,云计算,云平台,HTML5等等。但是我认为,不管时间如何变化,软件设计思想永远随着时间推移而被人们继承和发扬光大。
生活中的很多经验,都是历经风雨沧桑,被人们所接受认知并流传至今。比如:“磨刀不误砍柴工”,“织网捕鱼”,“是骡子是马,拉出去遛遛”等。不管咋样,本质思想是不变的。设计模式也是这样,本质就是那些成功软件设计师们的宝贵经验,是经过大量实践,总结归纳来的。既然生活经验可以积累继承,那设计模式也可以在程序设计和开发方面供我们使用。
那什么是设计模式?我们不需要那些抽象概念,只要记住是一种解决问题的思路,是复杂问题的简单解决方法就可以了。这只是宏观上对他进行说明。具体说就是:设计模式是对于在某种环境下软件设计问题上的可重用的解决方案,目的就是要充分利用已有的软件开发经验,解决不同问题。在软件开发设计的时候我们也是不断思考,实践,归纳总结得到一种行之有效的方法,遇到具体问题,拿过来套用把问题解决掉。
模式不是发明与创造,而是来自我们日常设计开发中的发现与总结,是一种实践经验的积累,最终促使我们走向成熟。
设计模式种类很多,包括分布式编程模式,用户界面模式,数据模型模式三大类。目前比较流行的是面向对象设计模式GoF(Gang of Four的缩写)模式,翻译出来比较邪恶“四人帮”,另一个是GRASP(General Responsibility Assignment Software Pattern)称为通用职责分配软件模式。
GRASP与其说他是模式,不如说他是原则和设计要求。他是干啥的?引用一段文档上的话很贴切,“GRASP的核心是自己干自己的事,自己只干自己的事,也就是职责分配和实现高内聚。用来解决面向对象设计的一些问题”。
在OOD中GRASP包括九大设计原则:
- 低耦合(Low Coupling)
- 高内聚(High Cohesion)
- 信息专家(Information Expert)
- 创建者(Creator)
- 控制器(Controller)
- 多态(Polymorphism)
- 纯虚构(Pure Fabrication)
- 间接(Indirection)
- 受保护变化(Protected Variation)
GoF模式,众所周知包括23种设计模式。
- 根据目的准则分类
- 创建型(Creational)
- 结构型(Structural)
- 行为型(Behavioral)
- 根据范围准则分类
- 类模式
- 对象模式
GRASP原则着重考虑设计类的原则及如何分配类的功能,而GoF模式则着重考虑设计的实现、类与类的交互及软件质量。所以GoF模式是符合GRASP原则的面向对象设计模式。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端