随笔分类 - 设计模式
设计模式
摘要:为了便于理解,加深记忆。得举一个最难让人忘记的应用场景,因为之前我也是学了忘,忘了学,当你想不起来观察者模式的时候,通过回忆这个例子,就能很快想起观察者模式的应用一.环境 当我们去上课的时候,需要记录老师的电话号码,那么当这位老师变更了他的电话号码,那么需要再上课的时候,老师主动告知同学们,同学们重
阅读全文
摘要:阅读目录 一:合成/聚合复用原则 二:什么是合成? 三:什么是聚合? 四:为什么尽量不要使用类继承而使用合成/聚合? 五:合成/聚合复用原则结构图 一:合成/聚合复用原则 尽量使用合成/聚合,尽量不要使用类继承 二:什么是合成? . 合成表示一种强的拥有关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样,打个比方:人有两个胳膊,胳膊和人就是部分和整体的关系,人去世了,那么胳膊也就没用了,也就是说胳膊和人的生命周期是相同的 . 合成关系用实心的菱形+实线来表示 三:什么是聚合? . 聚合表示一种弱的拥有关系,体现的是A对象可以包含B对象,但是B对象并不是A对...
阅读全文
摘要:应用场景 现在我们要做一个商场收银软件,营业员根据所购买商品的单价和数量,向客户收取费用,如果是你,你会怎么设计? 阅读目录 一:大部分人的写法v1.0 二:第一次改版后的代码v1.1 三:第二次改版后的代码v1.2 四:第三次改版后的代码v1.3 六:第四次改版后的代码v1.4 七:对比v1.2版
阅读全文
摘要:假设场景 现在假如公司要你做一个公司内部的薪资管理系统,根据职位的不同,每月的工资自然不一样,经理一月10000加上分红1000,技术人员一月5000加上200的餐补,客服一月3000,现在要是由你来做,你会怎么设计?代码无错便是优已经不适用了 阅读目录 一:大部分人的写法v1.0 二:第一次改版后的代码v1.1 三:第二次改版后的代码v1.2 四:第三次改版后的代码v1.3 五:UML类图解析 六:总结 七:思考 一:大部分人的写法v1.0 这样的写法会带来一个问题?什么问题呢?复用性的问题 假如现在你接了个私活,别的公司让你也写个公司内部的薪资计算系统,你说那还...
阅读全文
摘要:面向对象设计原则中,最重要的原则就是此原则 阅读目录 一:开放封闭原则二:开放封闭原则有两大特征三:为什么要用到开放封闭原则?四:开放封闭原则的两个问题? 五:开放封闭原则中的两个问题的解决办法 六:开放封闭原则的好处 七:开放封闭原则的注意事项 一:开放封闭原则 软件实体(类,模块,函数等)应该是可以扩展的,但是是不可以修改的二:开放封闭原则有两大特征 1:对于扩展是开放的 2:对于修改是封闭的 三:为什么要用到开放封闭原则? . 我们在做任何系统的时候,都不要指望系统一开始就需求确定,这是不现实也是不科学的想法,既然需求一定是会变化的,那么我们如何在面对需求变化时,设计的网站或软件可以..
阅读全文
摘要:单一职责原则解释:就一个类而言,应该只有一个引起它变化的原因 . 我跟大家一样不喜欢看教条,教条太抽象不好理解,那我就举个生活中的例子便于大家理解我们知道现在的手机有拍照,打电话,彩信,摄像,听歌等等很多功能,我们出去旅游的时候其实只要带一个手机就好了,坐在车上无聊的时候可以听歌,打游戏,欣赏风景的时候可以拍照,碰到趣人趣事得时候还可以摄像,真是好啊,但是仔细想想,手机听歌有MP4或MP5声效好吗?打游戏有PS效果好吗?拍照有数码相机像素高吗?摄像有SONY摄像机效果好吗?答案是没有,其实有时候一件产品简单一些,职责单一一些或许是更好的选择 . 我们有时候在做编程的时候,很自然而然的会给一个.
阅读全文
摘要:依赖倒转原则解释:抽象不应该依赖于细节,细节应该依赖于抽象,说通俗点也就是针对接口编程,不要针对实现编程 . 我们在做开发的时候,要访问数据库,就会把访问数据库的代码写成函数,每次去开发的时候调用这些函数就行了,其实这就叫高层模块依赖低层模块,违反了依赖倒转原则 . 当我们做一个新项目的时候,发现业务逻辑的高层模块都是一样的,但是客户希望换成不同的数据库,这就出问题了,我们希望能再次利用这些高层的业务逻辑模块,但是高层的业务逻辑模块和低层的数据访问模块是绑定的,没有办法复用这些高层模块,就好像电脑里如果CPU,内存,硬盘都需要依赖具体的主板,主板一换,所有的部件就没用了,这是不合理的,反过来.
阅读全文