- 16
- 0
- 约 8页
- 2017-05-29 发布于天津
- 举报
领域驱动设计:应对复杂领域业务的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 ]
您可能关注的文档
最近下载
- 一种用于生产压纹离型膜的装置.pdf VIP
- 用于水泥、砂浆和混凝土中的粒化高炉矿渣粉.docx VIP
- 06【单词字贴】冀教版小学英语六年级上册单词表衡水体描红练习字帖(三年级起点含音标).pdf VIP
- carto3 c=2.3版本使用手册.pdf VIP
- 北斗卫星导航系统在交通运输行业的应用(每日一练) .pdf VIP
- 2026届河南省洛阳洛宁县联考英语九上期末考试试题含解析.doc VIP
- 4.3齿轮箱与联轴器-株洲南方燃气轮机.doc VIP
- 人力资源竞争力分析.docx
- 2024年建筑工程春节期间安全应急预案.pdf VIP
- 2025至2030中国工业大麻行业产业运行态势及投资规划深度研究报告.docx VIP
原创力文档

文档评论(0)