很多人用设计模式的时候都很困惑,我认识许许多多的程序员都跟我说,设计模式不错,就是不知道在哪用。而许多人在用的时候也是生搬硬套,如同金庸小说中,只重招式的人一样。

其实项目需求千奇百怪,剑招是不够用的,也不必生搬硬套,否则硬用也只能是伤到自身而不能破敌。

记得金庸小说里风清扬教令狐冲的时候,说过独孤九剑的总纲,无招胜有招,其实设计模式中也有这种总纲,那便是 •Identify the aspects of your application that vary and separate them from what stays the same.(找到系统中变化的部分,将变化的部分同其它稳定的部分隔开。)

有了总纲接下来的事变就好做了,分析一下总纲,找到系统中变化的部分。这句话的含义是什么?我们怎么才能找到

“系统中变化的部分”?我想这个是总纲中深层的含义,其实这是在提示我们从需求中分析,发现需求方可能会改动

的地方,而在此基础上做的事情,通常我会认为我们要与需求人员达成一致的目的,而基于这个目的是有不同的变化

的,而另一半话 将变化的部分同其它稳定的部分隔开,又有这样的疑问了,如何寻找稳定的部分呢?其实不说大家

应该也能猜到 稳定的部分一样也是从需求目的中寻找。

貌似这样显得有点虚,来点儿实际的项目例子好了

在一个项目中,我遇到的问题是有一个搜索框类似于google,输入后需要有联想提示,并且要有一个层与之关联显

示不同的数据。这么一项目,变化点在于,显示不同数据的层,和联想提示的显示是可能变化的,而稳定的点是联想

提示本身与显示数据的层是分开的,而且都需要关联文本框的变化。这么经过分析这些变化与不变的点后,发现很适

合观察者模式,提示数据类和显示数据层类都需要观察文本框有没有变化,而有变化时就触发变化事件,而引起两个

类去做触发后的事情。

变化与不变是我们需要分析的最重要的部分,这个便是设计模式中独孤九剑的总纲。当然熟悉金庸书的人也知道要有破剑式,破掌式等等,等有时间了我再把这个类别也写出来

用独孤九剑的方式看设计模式相关推荐

  1. 从王者荣耀看设计模式(五.组合模式)

    从王者荣耀看设计模式(组合模式) 一.简介 在王者荣耀这款游戏中,我们可以在商店中购买英雄.英雄由法师.射手.打野等职业组合而成,其中各个职业由中国元素的英雄和外国元素的英雄组成,玩家可根据需要挑选并 ...

  2. 从王者荣耀看设计模式(六.观察者模式)

    从王者荣耀看设计模式(观察者模式) 一.简介: 王者荣耀是由十位玩家组成的RGB类电子竞技游戏.为了游戏良好的体验感,王者荣耀具有完备的系统提示机制.游戏开始时,系统会发出提示音:"敌军还有 ...

  3. 从王者荣耀看设计模式(十七.桥接模式)

    从王者荣耀看设计模式(桥接模式) 一.简介 王者荣耀是一款RGB游戏,玩家操控自己选择的英雄进行竞赛.在游戏正式开始前,玩家在挑选想要操作的英雄的同时,也会挑选适合该英雄的召唤师技能.召唤师技能是通用 ...

  4. 从王者荣耀看设计模式(十五.建造者模式)

    从王者荣耀看设计模式(建造者模式) 一.简介 为了玩王者荣耀的游戏体验感,不少玩家都会选择花钱购买自己常用英雄的皮肤.一方面,购买的皮肤通常要比原画更加"炫酷".另一方面,购买的英 ...

  5. 从王者荣耀看设计模式(远程代理模式)

    从王者荣耀看设计模式(远程代理模式) 一.简介 每位王者荣耀玩家都有一个属于自己的游戏账号.为了提升游戏等级或者增加游戏体验感,会存在多个游戏玩家同时共享一个游戏账号的情况.当一位玩家使用账号正在游戏 ...

  6. 从王者荣耀看设计模式(七.装饰者模式)

    ##从王者荣耀看设计模式(装饰者模式) 一.简介 王者荣耀中,角色的"伤害值"和"生命值"是很重要的概念.为了保证游戏的胜利,玩家会通过在游戏开始前配置合适的游 ...

  7. 从王者荣耀看设计模式(六.状态模式)

    从王者荣耀看设计模式(状态模式) 一.简介 英雄项羽在敌方英雄的攻击下存在3种不同的状态. 1.在健康生命值下--普通状态,在每次被攻击时,当前生命值=剩余生命值-敌方英雄伤害值 2.在生命值低于某一 ...

  8. 从王者荣耀看设计模式(四.简单工厂模式)

    从王者荣耀看设计模式(简单工厂模式) 一.简介 游戏开始前,玩家可从英雄池自由挑选将要出战的英雄 二.简单工厂模式 简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫 ...

  9. 从王者荣耀看设计模式(二.单例模式)

    从王者荣耀看设计模式(单例模式) 一:简介 多个英雄可同时攻击敌方水晶,当水晶血条小于0,游戏结束 二:单例模式 一个类有且仅有一个实例,并且自行实例化向整个系统提供(水晶). 这其中的设计原则有: ...

最新文章

  1. 改变跳转页面 英文_如何高效阅读英文文献?你可以试试它 | 知云文献翻译
  2. rsync同步文件到远程主机
  3. 统计特性和概率估计-1 (数学推导与证明)
  4. VTK:相互作用之PickableOff
  5. ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车前后左右综合实验
  6. 编程语言的分类及其优缺点,Python标准输入与输出
  7. linux终端默认密码是多少,linux基础懂多少?两个小问题考考你
  8. 通过Cisco packet Tracer 划分vlan实现不同交换机间pc进行通信
  9. 驱动程序的专业术语-秋镇菜版
  10. Xcode 4 with External Static Library for iPhone Development
  11. 计算机考研去哪个城市,2019计算机考研:考研热门城市院校排名
  12. 中文分词第三方库_Python计算生态jieba库和random库的综合运用之爬山篇
  13. DataTable对象的操作问题
  14. MybatisPlusExcepection: can not find lambda cache for this property [XX] for entity [xxx]
  15. 【神经网络】RBF神经网络逼近任意连续非线性函数的Simulink仿真
  16. 怎样访问ftp服务器的文件,访问ftp服务器文件夹
  17. 制作字幕.html教程,自制字幕怎么做 字幕制作软件
  18. 关于BGA芯片布局时要注意的要点
  19. 浏览器窗口切换(从一个页面切换到另一个页面并且不刷新)
  20. 机器学习(一)——随机游走

热门文章

  1. 澳洲移民 技术移民_我如何用Linux笔记本电脑欢迎移民家庭
  2. 2023 typecho Diaspora 清新文艺自适应主题模板
  3. c语言下落的字母,C语言控制台小游戏之下落的字符
  4. 怎么写年终工作总结,能让老板更认可我?
  5. 曲线运动与万有引力公式_高中物理曲线运动、万有引力公式
  6. python之程序判断季节
  7. C++实现获取Windows操作系统内核版本号
  8. vue中使用eCharts插件显示中国地图
  9. 小程序样式text:after不起作用。在开发者工具看不到样式
  10. 路由器远程服务器无响应,路由器提示远程服务器未响应