不要老谈“设计模式”
接下来我将谈一下关于“设计模式”。这年头,是个程序员,要是不知道“设计模式”,绝对被人鄙视孤陋寡闻。一时间,“设计模式”高手就是编程高手 了。对于一些刚学习编程的人,他们都乐于谈论关于“设计模式”,他们会津津乐道某个设计模式,并为在某些代码上发现了一个“设计模式”的妙用而兴奋。我这 人不怎么喜爱设计模式,因为我懒,要学习设计模式,我还得去学习设计模式的背景,太费脑子了,而且关键是我用不着!当然,我在这里不是要反对“设计模式 ”,我也大体的把设计模式的书粗略过了一下,不过能说上来并应用的也就工厂、适配器、迭代器模式了,更不清楚这么多模式他们之间的各种关联性等等。
我在这里想说的就是,“设计模式”犹如精辟的剑招,每一种模式都能有效“克制敌人的某一个招数”。不过遗憾的是,我们很少遇到只拥有某一中招数的 敌人,我们经常遇到各种各样的敌人,他们使出各种各样的招数,即使我们完全学了所有设计模式,也难以招架。其实,大家在海阔天空谈论设计模式的时候,往往 容易忽略了设计模式的背景。在我看来,设计模式出现的原因是如果开发人员设计的程序比较僵硬,不自然,那么开发和维护就非常痛苦。由此,产生了面向对象的 设计原则。OOP最重要的原则就是SRP,即单一职责原则;其次是OCP原则,即开闭原则。你可以发现,基本上,每一个模式都很符合OOP的这些原则。设 计模式是在面向对象应用上面发展的必然结果,它追求程序变得更加”道法自然“,以避免开发人员受编程之苦。当你从面向对象学习起到开发很多项目之后,你也 会慢慢发现OOP原则和满足这些原则的设计模式的。如果一味的追求设计模式,而少了编程经验,根本无法体会面向对象的精髓,只能是硬着学一些招数而已。
因此,我给高谈“设计模式”的人的建议就是:(1)C#\C++\Java中的每一个关键字你们都掌握了吗? 如果没有的话,赶紧行动,告诉你自己Override、Virtual、Private/Protected/Public...等关键字的意义,当你能 够娴熟使用这些关键字的时候,你算是初步了解了面向对象的基本要素了。(2)对接口的把握程度,”多重继承“是接口最没有意义的用处了,如果你只知道这层 含义,需要多做项目。(3)循序渐进,多做实践。在实践同时,你可以学习设计模式。通过设计模式,你可以给自己制定目标,就是你以后也可以发明类似的设计 模式。(4)道法自然,如果程序设计的看上去很自然,那这些程序就是好程序了。
不要老谈“设计模式”相关推荐
- 结合电商项目谈设计模式
结合电商项目谈设计模式 一.创建型(6种) 1.单例模式:创建一个仅能具有一个实例(仅能被实例化一次)的对象. 类框架:包括私有变量,私有构造方法和公共静态方法 实现方式: (1)懒汉式-线程不安全: ...
- 趣谈设计模式 | 模板方法模式(Template Method):封装不变部分,扩展可变部分
文章目录 案例:房屋建造 模板方法模式 模板方法模式与策略模式 总结 完整代码与文档 这个设计模式过于简单,所以不是很好举例- 案例:房屋建造 假设我们是建筑公司中的规划者,负责设定建筑方案,在初期我 ...
- 趣谈设计模式 | 代理模式(Proxy):利用代理来控制对象的访问
文章目录 案例:房屋中介 代理模式 代理模式与装饰器模式 代理模式的应用 远程代理 虚拟代理 安全代理 智能引用代理 写时拷贝代理 总结 完整代码与文档 由于代理模式相较于前面的其他设计模式来说更加简 ...
- 趣谈设计模式 | 策略模式(Strategy):你还在使用冗长的if-else吗?
文章目录 案例:指挥官AI 策略模式 配合工厂模式 总结 完整代码与文档 案例:指挥官AI 案例可能不符合实际逻辑,仅用于表述设计模式的思想,勿介意 假设我们开发了一款类似全面战争的即时战略游戏,为了 ...
- 子慕谈设计模式系列(二)——设计模式六大原则
六大原则 单一职责原则 里氏替换原则 依赖倒置原则 接口隔离原则 迪米特法则 开闭原则 前言 设计模式不容易用文字描述清楚,而过多的代码,看起来也让人摸不到头脑,加上词语或者文字描述的抽象感,很容易让 ...
- 趣谈设计模式 | 状态模式(State):如何实现游戏中的状态切换?
文章目录 案例:马里奥积分竞赛 有限状态机 分支逻辑法 查表法 状态模式 状态模式与策略模式 总结 完整代码与文档 案例:马里奥积分竞赛 喜欢马里奥的小伙伴们都应该知道,前不久马里奥为了庆祝35周年, ...
- 从王者荣耀谈设计模式
软件开发中涉及到的设计模式很多,这里重点讨论工作中常见的一些设计模式,围绕王者荣耀中的场景进行展开. 1:策略模式 策略模式demo <?php //1:抽象策略接口:王者荣耀 abstract ...
- 从王者荣耀谈设计模式
软件开发中涉及到的设计模式很多,这里重点讨论工作中常见的一些设计模式,围绕王者荣耀中的场景进行展开. 1:策略模式 策略模式demo <?php //1:抽象策略接口:王者荣耀 abstract ...
- .NET简谈设计模式之(策略模式)
策略模式在我们日常开发中经常被用到,这篇文章不是策略模式的深入讨论和学术研究,只是让初学者能有个基本的了解. 什么叫策略:1. 可以实现目标的方案集合:2. 根据形势发展而制定的行动方针和斗争方法:3 ...
- 【大话设计模式】——浅谈设计模式基础
初学设计模式给我最大的感受是:人类真是伟大啊!单单是设计模式的基础课程就让我感受到了强烈的生活气息. 个人感觉<大话设计模式>这本书写的真好.让貌似非常晦涩难懂的设计模式变的生活化.趣味化 ...
最新文章
- mybatis查询如何返回ListMap类型数据
- 【深度学习】翻译:60分钟入门PyTorch(四)——训练一个分类器
- Hadoop hdfs 使用流来上传文件代码示例
- 46. Permutations
- 2022年中国AI芯片行业深度研究
- 浏览器判断及客户端跳转,绕开微信对某宝限制
- 微信公众平台回复音乐
- c# winform 设置winform进入窗口后在文本框里的默认焦点
- Kotlin — 适用于数据科学
- 关于winpcap发包速度低的问题
- python 解压zip ,rar 文件及编译错误的解决方法
- AI智能合同审阅系统
- 卡西欧电子词典EV-SP3900(英汉日版)
- linux 360云盘下载文件夹里,360安全云盘Linux版图文使用说明
- 您选择的不是数据库安装目录_您不是您的数据,但您的数据仍然是您
- 信创引领丨呼叫中心加速适配国产化
- 历代iphone详细对比
- swagger 怎么显示enum_dotnet core swagger filter 隐藏接口和显示枚举描述
- WPF 控件【U】UserControl(一) UserControl、ContentControl、Page的区别,及它们的使用方法
- norflash的基本操作2
热门文章
- Python 双y轴绘制
- java线程卖票_Java通过卖票理解多线程
- Linux关闭占用端口的进程
- matlab 通信工程,MATLAB 通信工程仿真
- 树莓派4烧录系统后黑屏_原创试用 | 树莓派3B+测评(二)ubuntu系统烧录+彩虹屏问题解决...
- 解构流存储 — Pravega,与 Flink 构建端到端的大数据流水处理线
- python中布尔值是什么意思_python中的布尔值是什么
- linux 终端 收取邮件,linux mail 命令 (收发邮件)
- combox控件触发事件_Simulink(三角函数和代数约束模块)+Matlabgui(Gui实例)+Stateflow数据与事件(三)...
- Python让繁琐工作自动化——chapter17 操作图像