负责任务:
- 组间协调(被漫画师骂,被项目经理骂,被技术主管骂,被冲刺经理骂)
- 需求分析(提出一堆没什么用的东西)
- 系统主要业务(队友搭好了架构之后为所欲为)
- 客户端架构(不动脑子写代码)
- 重构(不动脑子写代码的结果)
一、用例分析
- Part 1 :
- 功能主题 : 添加自设的进程黑名单
- 角色 : 用户
- 触发条件 :
- 用户进入「查看黑名单」模式
- 点击了「添加新进程」按钮
- Part 2 :
- 功能主题 : 点击开始后,进入「惩罚」模式
- 角色 : 用户
- 触发条件 :
- 用户设置时间大于1minute
- 用户在开始界面摁下了开始按钮
二、技术说明书
-
Part 1 :
-
所用模型 : MVVM
- Model层 :
- Service层 :
- ViewModel层 :
- View层 :
- Model层 :
-
流程:
- 用户点击
添加进程 button
=>ViewProgressPage
跳转到addProgressPage
- 用户点击
「Step1:打开你想添加的应用程序,摁下确认」 button
=> 调用AddProgressViewModel
中的字段_ProcessService
中的方法GetProcessNow
,获取当前进程 - 用户点击
「Step2:关闭该应用程序,摁下确认」 button
=> 调用AddProgressViewModel
中的字段_ProcessService
中的方法GetProcessNow()
,获取当前进程,并将两个值传入该字段的GetDiffrentProcess()
方法,返回此段时间内不同的线程,即为所求 - 用户在ListView中选择进程,在右侧textBox输入名称后,点击
「Step3:关闭该应用程序,摁下确认」 button
=> 调用AddProgressViewModel
中的字段_LocalBlackListService
中的方法AddNewBlackList()
,将新进程存入本地数据库,执行完毕后,addProgressPage
跳转到ViewProgressPage
- 用户点击
-
-
Part 2 :
-
所用模型 : MVVM
- Model 层:
同上 - Service层 :
同上 - ViewModel层 :
- View层
- Model 层:
-
流程:
- 用户点击
添加进程 button
=>MainPage
跳转到CountDownPage
,在新页面的Loaded
方法中创建类型为Timer
的进程,更新页面倒计时,并且传递BeginListenMessage
, 执行CountDownViewModel
中的登记好的线程
public class CountDownViewModel : ViewModelBase{ private Thread t1; ... public CountDownViewModel(){ //Refresh方法 : 监听算法 t1 = Thread(Refresh); ... Messenger.default.registed<BeginListenMessage>(this, (message) =>{ t1.start();
- 用户点击
});
}
```-
Refresh方法 :
-
调用
AddProgressViewModel
中的字段_ProcessService
中的方法GetProcessNow()
,获取当前进程 -
调用
AddProgressViewModel
中的字段_ProcessService
中的方法IfBlackListProcessExist()
,获取当前进程是否有黑名单 -
若有 => 唤醒音乐播放(若音乐已播放,只调节音量),传递 Message 到 CountDownPage,修改Dispatcher的值 => 执行页面弹出,进程挂起两秒后继续判断
-
若无 => 若音乐播放,关闭音乐
-
-
两线程将在点击
提前完成
与放弃任务
按钮后 / 时间运行到 00:00 后执行stop()
,并将结果写到数据库,CountDownPage
跳转到MainPage
-