- 怎么提高自己的系统设计和架构理论水平? 一般而言,开发人员在从事开发3年后基本可以逐步做出初步设计,再做设计3年基本能够具备架构设计的能力。架构设计虽然高屋建瓴,从顶朝下对问题进行分解并最终解决,但是你会看到真正所有能力却是来源于你日常的编码和日常功能模块设计的大量实践积累。 怎么提高自己的系统设计和架构理论水平? 一般而言,开发人员在从事开发3年后基本可以逐步做出初步设计,再做设计3年基本能够具备架构设计的能力。架构设计虽然高屋建瓴,从顶朝下对问题进行分解并最终解决,但是你会看到真正所有能力却是来源于你日常的编码和日常功能模块设计的大量实践积累。
- 一、白话 访客者模式就是,访客和被访者以及组合角色三者之间的一个封装。访客者需要有访问接口,被访客者需要有被访问接口,组合角色需要有所有访客访问被访者的组合。还是比较绕,我看过最形象的比喻就是:人喂动物。人就是访客,动物是被访者。人可以有丈夫,妻子,动物可以有猫、狗。这里就能形成四种组合,这四种方式封装起来就是组合角色(结构角色)。这样就完成了访客者模式,丈夫去喂动物或者妻子喂动物的时候,... 一、白话 访客者模式就是,访客和被访者以及组合角色三者之间的一个封装。访客者需要有访问接口,被访客者需要有被访问接口,组合角色需要有所有访客访问被访者的组合。还是比较绕,我看过最形象的比喻就是:人喂动物。人就是访客,动物是被访者。人可以有丈夫,妻子,动物可以有猫、狗。这里就能形成四种组合,这四种方式封装起来就是组合角色(结构角色)。这样就完成了访客者模式,丈夫去喂动物或者妻子喂动物的时候,...
- 一、白话 我们经常会使用微博,抖音啥的,我希望能够分享一个视频给喜欢美女的人(我并不知道这些人是谁,如何联系),于是我贴了个标签“美女”,这样,喜欢美女的人就会被抖音推送该视频,我通过抖音这个中介,完成了和其他人的消息互动。再比如告白墙,我喜欢某个女生小芳,但是我并没有这个女生的联系方式,于是我直接写在告白墙上,这样小芳看告白墙的时候,就接受到了这条消息。 中介者模式就是,所有人都只能通过... 一、白话 我们经常会使用微博,抖音啥的,我希望能够分享一个视频给喜欢美女的人(我并不知道这些人是谁,如何联系),于是我贴了个标签“美女”,这样,喜欢美女的人就会被抖音推送该视频,我通过抖音这个中介,完成了和其他人的消息互动。再比如告白墙,我喜欢某个女生小芳,但是我并没有这个女生的联系方式,于是我直接写在告白墙上,这样小芳看告白墙的时候,就接受到了这条消息。 中介者模式就是,所有人都只能通过...
- 一、白话 每个人都有生气,开心和郁闷等状态,在这些状态下即使做同一件事也会有一不同的结果。即状态模式的一种应用二、定义 类的行为是基于它的状态改变的。 抽象状态角色:提供一个方法封装上下文对象的状态。 具体状态角色:继承抽象状态类,实现状态下的行为。 上下文角色:负责对具体状态进行切换三、示例// 状态行为public interface MoodState { void w... 一、白话 每个人都有生气,开心和郁闷等状态,在这些状态下即使做同一件事也会有一不同的结果。即状态模式的一种应用二、定义 类的行为是基于它的状态改变的。 抽象状态角色:提供一个方法封装上下文对象的状态。 具体状态角色:继承抽象状态类,实现状态下的行为。 上下文角色:负责对具体状态进行切换三、示例// 状态行为public interface MoodState { void w...
- 一、白话 看电视时,我们都是通过遥控机来操作电视,如开机,关机,换台。这就是对命令模式的一种使用。二、定义 命令模式,请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。● Receive接收者角色:该角色就是干活的角色,命令传递到这里是应该被执行的,具体到我们上面的例子中就是Group的三个实现类。● Comm... 一、白话 看电视时,我们都是通过遥控机来操作电视,如开机,关机,换台。这就是对命令模式的一种使用。二、定义 命令模式,请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。● Receive接收者角色:该角色就是干活的角色,命令传递到这里是应该被执行的,具体到我们上面的例子中就是Group的三个实现类。● Comm...
- 一、白话 现实生活中,我们会遇到很多流程,如请假流程,先是组长审批,没问题,然后是经理审批,没问题,最后是老板审批。这就是责任链模式的一种应用,请求按照请求链一次传递。二、定义 责任链模式为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。 抽象处理者(Handler)角色:定义一个处理请求的接口,包含抽象处理方法和一个后继连接。 具体处理者(Co... 一、白话 现实生活中,我们会遇到很多流程,如请假流程,先是组长审批,没问题,然后是经理审批,没问题,最后是老板审批。这就是责任链模式的一种应用,请求按照请求链一次传递。二、定义 责任链模式为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。 抽象处理者(Handler)角色:定义一个处理请求的接口,包含抽象处理方法和一个后继连接。 具体处理者(Co...
- 一、白话 在网上买东西,会看到有一个价格趋势图,也会有一个按钮,写着降价通知,这样能更好的买到更便宜的东西。这就类似一种观察者模式,当一个事务的状态变更后,需要通知观察者。二、定义 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 Subject:抽象主题(抽象被观察者),抽象主题角色把所有观察者对象保存在一个集合里,每个主题都可... 一、白话 在网上买东西,会看到有一个价格趋势图,也会有一个按钮,写着降价通知,这样能更好的买到更便宜的东西。这就类似一种观察者模式,当一个事务的状态变更后,需要通知观察者。二、定义 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 Subject:抽象主题(抽象被观察者),抽象主题角色把所有观察者对象保存在一个集合里,每个主题都可...
- 一、白话 玩游戏的时候,我们经常会存储进度,或者玩到某个进度的时候,系统自动保存,当我们死亡时,能够直接读取保存的某个状态,让我们重新攻略一次。存储某个时间节点的状态,便于后续恢复,就是备忘录模式。二、定义 在不破坏封装性的前提下,捕获某个状态的内部状态,并在该对象之外保存这个状态。备忘录模式的主要角色如下。发起人(Originator)角色:记录当前时刻的内部状态信息,提供创建备忘录和... 一、白话 玩游戏的时候,我们经常会存储进度,或者玩到某个进度的时候,系统自动保存,当我们死亡时,能够直接读取保存的某个状态,让我们重新攻略一次。存储某个时间节点的状态,便于后续恢复,就是备忘录模式。二、定义 在不破坏封装性的前提下,捕获某个状态的内部状态,并在该对象之外保存这个状态。备忘录模式的主要角色如下。发起人(Originator)角色:记录当前时刻的内部状态信息,提供创建备忘录和...
- 一、白话 一个专门做翻译的公司,如果有一段英文著作需要翻译,我先看看公司是否存在有会英语的员工,如果有个法语著作,我需要先看看公司有没有会法语的员工,如果没有,则我需要新招入一个。判断公司有没有,有就直接用,没有,则需要新招聘。就类似程序,有这个对象,就直接拿来用,没有,就需要新创建。这就是享元模式,基于工厂的特殊处理。二、定义 一个系统中如果有多个相同的对象,那么只共享一份就可以了,不... 一、白话 一个专门做翻译的公司,如果有一段英文著作需要翻译,我先看看公司是否存在有会英语的员工,如果有个法语著作,我需要先看看公司有没有会法语的员工,如果没有,则我需要新招入一个。判断公司有没有,有就直接用,没有,则需要新招聘。就类似程序,有这个对象,就直接拿来用,没有,就需要新创建。这就是享元模式,基于工厂的特殊处理。二、定义 一个系统中如果有多个相同的对象,那么只共享一份就可以了,不...
- 一、白话 假设我是手机订购甲方,由于我是甲方爸爸,我现在对现有的几款手机并不是很满足,我希望他们能各自添加一些特殊的功能,可能会重复,也有可能不会。小米,华为,苹果。我希望小米可以唱歌,华为可以画画,苹果可以跳舞。然后各自的厂商就去在原先的的功能上添加了新的功能,交给我。我看了后,感觉又后悔了,我想不行,我华为可以唱歌,小米可以画画。然后他们又回去改,在原先的功能上添加功能,然后我又。。(... 一、白话 假设我是手机订购甲方,由于我是甲方爸爸,我现在对现有的几款手机并不是很满足,我希望他们能各自添加一些特殊的功能,可能会重复,也有可能不会。小米,华为,苹果。我希望小米可以唱歌,华为可以画画,苹果可以跳舞。然后各自的厂商就去在原先的的功能上添加了新的功能,交给我。我看了后,感觉又后悔了,我想不行,我华为可以唱歌,小米可以画画。然后他们又回去改,在原先的功能上添加功能,然后我又。。(...
- 一、白话 我家里有一个自动化的喷漆工厂(梦里啥都有),每次出行前,我都想为我的出行工具换一种喷漆已适配我的出行,这个自动化工厂就是一种装饰器。这个自动化有什么好处呢,每种交通工具我都只需要买一种就行了,需要什么颜色就喷什么颜色,而不是每种车都需要买多个颜色的。即使我有了新的车,一样可以使用。这里颜色车可比作继承,自动化工厂就是装饰器。所以装饰器就是一种继承的替代方案。二、自定义 装饰器模... 一、白话 我家里有一个自动化的喷漆工厂(梦里啥都有),每次出行前,我都想为我的出行工具换一种喷漆已适配我的出行,这个自动化工厂就是一种装饰器。这个自动化有什么好处呢,每种交通工具我都只需要买一种就行了,需要什么颜色就喷什么颜色,而不是每种车都需要买多个颜色的。即使我有了新的车,一样可以使用。这里颜色车可比作继承,自动化工厂就是装饰器。所以装饰器就是一种继承的替代方案。二、自定义 装饰器模...
- 一、白话 使用树形结构的将所有的组件组合起来。例如一台电脑由显示器,主机,键盘,鼠标组合而成,主机由硬盘,风扇,cpu,内存条组成,风扇又由扇片,电机组成,整个组织组合起来就展现出来了一种树状的接口。而把所有的部件组合起来的技术就叫组合模式。二、定义 将对象组合成树形结构来表示“部分-整体”的层次结构。组合模式使得客户能以一致的方式处理个别对象和组合对象。 组合模式中的角色:Compon... 一、白话 使用树形结构的将所有的组件组合起来。例如一台电脑由显示器,主机,键盘,鼠标组合而成,主机由硬盘,风扇,cpu,内存条组成,风扇又由扇片,电机组成,整个组织组合起来就展现出来了一种树状的接口。而把所有的部件组合起来的技术就叫组合模式。二、定义 将对象组合成树形结构来表示“部分-整体”的层次结构。组合模式使得客户能以一致的方式处理个别对象和组合对象。 组合模式中的角色:Compon...
- 一、白话 适配器模式,最重要的就是适配。将不匹配的两端接起来就是适配。常见的手机充电只能是5V,但是家用是220V,需要充电头适配,将220V转换成5V。手机电压不能改变,出厂就设置好了。家用电压220V,不能改变,统一的。中间的适配器就得到了合理的存在意义,适配了两端,充电头就是适配器。二、定义 将一个接口转换成用户希望的另一个接口就是适配器模式。使得原先无法兼容的接口能一起工作。 ... 一、白话 适配器模式,最重要的就是适配。将不匹配的两端接起来就是适配。常见的手机充电只能是5V,但是家用是220V,需要充电头适配,将220V转换成5V。手机电压不能改变,出厂就设置好了。家用电压220V,不能改变,统一的。中间的适配器就得到了合理的存在意义,适配了两端,充电头就是适配器。二、定义 将一个接口转换成用户希望的另一个接口就是适配器模式。使得原先无法兼容的接口能一起工作。 ...
- 一、白话 由于我是做java的web应用的,这个模式用的就比较多了,用的时候也没感觉到一种模式,现在想想确实web应用就是一个外观模式。现实举例,我们去吃烤肉,如果我们自己烤,我们需要自己拿肉,开火,刷油,翻滚菜..,烤熟。 经过一系列的动作,最后才完成得到烤肉这个结果。但是,有些店是有提供烤肉的服务的,你只需要跟店家说,帮我烤一份牛肉,然后店家就会自己去完成拿肉,开火,刷油一系列动作,最... 一、白话 由于我是做java的web应用的,这个模式用的就比较多了,用的时候也没感觉到一种模式,现在想想确实web应用就是一个外观模式。现实举例,我们去吃烤肉,如果我们自己烤,我们需要自己拿肉,开火,刷油,翻滚菜..,烤熟。 经过一系列的动作,最后才完成得到烤肉这个结果。但是,有些店是有提供烤肉的服务的,你只需要跟店家说,帮我烤一份牛肉,然后店家就会自己去完成拿肉,开火,刷油一系列动作,最...
- 一、白话 单例模式是被知晓最多的模式,无外乎简单。理解也是一样,无外乎就是生成一个独一无二的东西,不管谁来,什么时候来,只能拿到同一个东西。例如银行账号,不管你取了几次钱,什么时候去取,始终都是那个账号,不会说你往这个账号存了两次钱,下一次去取,你是从其他账号取出来的。身份证这些也是一样的,不管你有多少张身份证,都是绑定你这个人,你这个人是独一无二的,无论何时何地,你都只有一个,所以绑定身... 一、白话 单例模式是被知晓最多的模式,无外乎简单。理解也是一样,无外乎就是生成一个独一无二的东西,不管谁来,什么时候来,只能拿到同一个东西。例如银行账号,不管你取了几次钱,什么时候去取,始终都是那个账号,不会说你往这个账号存了两次钱,下一次去取,你是从其他账号取出来的。身份证这些也是一样的,不管你有多少张身份证,都是绑定你这个人,你这个人是独一无二的,无论何时何地,你都只有一个,所以绑定身...
上滑加载中
推荐直播
-
DeepSeek华为云全栈解决方案
2025/02/18 周二 16:30-17:30
Young-华为云公有云解决方案专家
如何让大模型发挥更大能量助力业务?本期课程以真实案例展开,带您深入探索如何构建更完整的AI解决方案。
回顾中
热门标签