领域驱动设计:应对复杂领域业务的Domain层.pdfVIP

  • 16
  • 0
  • 约 8页
  • 2017-05-29 发布于天津
  • 举报

领域驱动设计:应对复杂领域业务的Domain层.pdf

领域驱动设计:应对复杂领域业务的Domain层.pdf

领域驱动设计:应对复杂领域业务的Domain层 温馨提⽰:此篇章需要⽐较长的时间才能最终定稿,因为我还要寻找最合适的 式和 语⾔来表述。 2.16.1 领域驱动设计 很多框架关⼼性能,⽽不关⼼⼈⽂;很多项⽬关⼼技术,⽽不关注业务。 就这造成了复杂的领域业务在项⽬中得不到很好地体现和描述,也没有统⼀的规则, 更没有释意的接⼜。最终导致了在“纯⾯向对象”框架⾥⾯凌乱的代码编写,为后期的 维护扩展、升级优化带来很⼤的阻碍。这就变成了,框架只关注性能,项⽬只关⼼技 术,⽽项⽬却可怜地失去了演进的权利,慢慢地步履维艰,最终牵⼀发⽽动全⾝。 很多⼈都不知道该如何真正应对和处理领域的业务 ,尽管领域业务和单元测试都是如 此重要并被⼴泛推崇。正如同表⾯上我们都知道单元测试却没有具体真实地接触过, 并且⼀旦到真正需要编写⼀⾏单元测试的代码时就傻眼了。 这⾥不是发明⼀些新技术,也不是提供⼀些新的模式,⽽是继续将前⼈、⼤神和顶级 ⼤师关于领域驱动设计这 ⾯的思想结合真实后台接⼜开发进⾏分享,进⽽推⼴之。 2.16.2 讲 故事 很多⼈,都喜欢听故事。像我以前中学的时候,就很喜欢看 《故事会》。 如果,我们能让代码也像⼩说⼀样,在讲述某个故事时,将会更加吸引“读者” (也就 是其他开发同学),从⽽易于理解和维护。 最近,我在做⼀个项⽬时,再⼀次发现了这种讲述故事的威⼒。 (1)⼀个第三⽅登录的写法 我们先以F项⽬来命名这个项⽬,在F项⽬中,我们跟其他App⼀样,需要接⼊第三 登录,其中包括:微信登录、微博登录和QQ登录、邮箱登录等。 以下,则是我根据 讲 故事 的 式,为微信登录编写的代码: ?php class Api_User_Login extends PhalApi_Api { public function getRules() { return array( weixin = array( openId = array( name = wx_openid , require token = array( name = wx_token , require expiresIn = array( name = wx_expires_in , nickname = array( name = name , default avatar = array( name = avatar , default ), ); } public function weixin() { $rs = array( code = 0, info = array(), msg = $domain = new Domain_User_Login_Weixin(); $isFirstBind = $domain-isFirstBind($this-openId); $userId = 0; if ($isFirstBind) { $userId = Domain_User_Generator::createUserForWeixin( $this-openId, $this-nickname, $this-avatar); $domain-bindUser($userId, $this-openId, $this-toke } else { $userId = $domain-getUserIdByWxOpenId($this-openId); } $token = Domain_User_Session::generate($userId, $this-cli $rs[ info ][ user_id ] = $userId; $rs[ info ][ token ] = $token; $rs[ info ][ is_new ]

文档评论(0)

1亿VIP精品文档

相关文档