请问各位有谁知道我这是闲聊突然登不上去什么原因因吗?每次登上游戏就掉下来,还弹出来这么一个框!

设计模式不应该停留于理论跟具体业务结合,它才会变得更香~

设计模式我们多少都有些了解但是往往也只是知道是什么。

在真实的业务场景中你有用过什么设计模式来编写更优雅的代码吗?

我们更多的是每天从产品经理那里接受到新需求后就开始MVC一把梭,面向sql编程了

我们习惯采用MVC架构,实时仩是非常容易创建很多贫血对象模型然后写出过程式代码。我们使用的对象往往只是数据的载体,没有任何逻辑行为我们的设计过程,也是从ER图开始以数据为中心进行驱动设计。一个需求一个接口从controller到service到dao,这样日复一日的CRUD

什么设计模式?根本不存在的!

今天峩们尝试从常用设计模式(工厂模式、代理模式、模版模式)在CRUD中的可落地场景,希望能给大家带来一些启发

设计模式(Design pattern),不是前人憑空想象的而是在长期的软件设计实践过程中,经过总结得到的

使用设计模式是为了让代码具有可扩展性,实现高聚合、低耦合的特性

世上本来没有设计模式,写代码的人多了便有了设计模式。

面向对象的设计模式有七大基本原则:

  • 开闭原则(首要原则):要对扩展开放对修改关闭
  • 单一职责原则:实现类要职责单一
  • 里氏代换原则:不要破坏继承体系
  • 依赖倒转原则:面向接口编程
  • 接口隔离原则:设計接口要精简单一
  • 最少知识原则或者迪米特法则:降低耦合

过去,我们会去学习设计模式的理论今天,我们尝试从常用设计模式(工厂模式、代理模式、模版模式)在CRUD中的可落地场景希望能给大家带来一些实战启发。

工厂模式应该是我们最熟悉的设计模式了很多框架嘟会有经典的xxxxFactory,然后通过xxxFactory.create来获取对象这里不详细展开介绍,给出一个大家耳熟能详的工厂模式类图应该就能回忆起来了

工厂模式的优點很明显:

一个调用者想创建一个对象,只要知道其名称就可以了
扩展性高,如果想增加一个产品只要扩展一个工厂类就可以。
屏蔽產品的具体实现调用者只关心产品的接口。
那么实际业务开发该怎么落地使用呢?

那么有一个很重要的模块就是实现HBase的增删改查。

洏开源的HBase-client已经提供了标准的增删改查的api我们如何集成到系统中呢?

每次增加一个功能都需要从controller到service写一遍类似的操作。

还需要构建很多楿关dto进行数据传递里面会带着很多重复的变量,比如表名、列名等查询条件

一个执行接口,执行增删改查多个命令

service调用工厂来创建具體的命令进行执行

每次添加一个新的命令只需要实现一个新的命令相关内容的类即可

代理模式也是大家非常熟悉的一种模式。

它给一个對象提供一个代理并由代理对象控制对原对象的引用。它使得用户不能直接与真正的目标对象通信

代理对象类似于客户端和目标对象の间的中介,能发挥比较多作用比如扩展原对象的能力、做一些切面工作(打日志)、限制原对象的能力,同时也在一定程度上面减少叻系统的耦合度

现在已经有一个client对象,实现了若干方法

希望这个对象的方法A不再被支持。
希望对这个client的所有方法的执行时间进行记录

  • 删除方法A(不兼容改动,如果别人有引用可能会编译报错)
  • 对每个方法的前后埋点计算时间(业务入侵太大,代码严重冗余)

对于方法A的不再支持其实有挺多办法的,继承或者静态代理都可以

对于每个方法的前后计算埋点,可以使用动态代理进行实现

定义一个操莋中的流程框架,而将一些流程中的具体步骤延迟到子类中实现

模板方法使得子类可以不改变一个流程框架下,通过重定义该算法的某些特定步骤实现自定义的行为

当然,最便利之处在于我们可以保证一套完善的流程,使得不同子类明确知道自己需要实现哪些方法来唍成这套流程

其实模板方法是最容易理解的,也非常高效

我们最常用模版方法的一类需求就是工单审批流。

具体来说假如我们现在需要定义一套流程来实现一个工单审批,包含工单创建、审批操作、事件执行、消息通知等流程(实际上流程可能会更加复杂)

而工单嘚对象非常多,可以是一个服务的申请、一个数据库的变更申请、或者是一个权限申请

每个工单流程写一套代码。

  • 流程某些关键环节可能会缺失比如事件执行以后忘记通知了。

定义一个接口里面包括了若干方法

在一个流程模版中,拼接各个方法实现完整工作流

最后,就根据具体的工单来实现自定义的excute()方法就行了实现DbFlow、MainFlow就行了。

面试官问你在开发中有用过什么设计模式吗?我懵了

学习设计模式最偅要的就是要在业务开发过程中保持思考在某一个特定的业务场景中,结合对业务场景的理解和领域模型的建立才能体会到设计模式思想的精髓。

如果脱离具体的业务场景去学习或者谈论设计模式那是没有意义的。

有人说怎么区分设计模式和过度设计呢?

1)业务设計初期如果非常熟悉业务特性,理解业务迭代方向那么就可以做一些简单的设计了。

2)业务迭代过程中当你的代码随着业务的调整需要不断动刀改动,破坏了设计模式的七大原则尤其是开闭原则,那么你就该去考虑考虑使用设计模式了。

为什么登不进去闲聊 我里面还有錢怎么办

你对这个回答的评价是

首先,看你的流量是否正常如果正常,可以试试打开:我_设置_隐私

那为什么我用别人的手机就能登上峩得闲聊呢

你对这个回答的评价是?

无法找到密码登录不上去

你对这个回答的评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鮮体验你的手机镜头里或许有别人想知道的答案。

我要回帖

更多关于 闲聊突然登不上去什么原因 的文章

 

随机推荐