Perl / Moose OO设计,包层次结构

前端之家收集整理的这篇文章主要介绍了Perl / Moose OO设计,包层次结构前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是一个平均perl程序员.我没有问题的语言本身,但与“好”的对象设计.虽然我可以理解(大多数)CPAN模块,没有严重的问题,我甚至无法设计自己,即使是简单的对象层次结构.

示例 – 现在面对一个非常简单的应用程序(Web和命令行界面):

>已验证的学生上传一个zip文件(包含一个渲染作业)
>将文件解压缩到新目录并检查它的内容(应该包含一个文件命令.txt)和零个或多个图像
>如果内容OK – 将目录移动到位置:JobRepository(另一个目录)
>如果用户决定运行渲染作业 – 将作业从他自己的JobRepository发送到全局渲染队列(再次是另一个目录)
>另一个进程从队列中获取作业(fifo – 使用IPC::DirQueue设计)并执行渲染过程
>完成后,将结果放入用户JobRepository / result目录中
>发送电子邮件用户
>学生可以下载压缩结果

在bash中,可以使用很少的“不复杂”的bash脚本 – 但是我想在Perl(因为web界面)中进行操作 – 并且想要实践(Moose)对象设计…

这里开始我的问题.

尝试了“视觉”名词分析方法,并做出下一个图像.

发布图像,因为它是“更短”为:

package Iren::JobRepo;
use Moose;
use warnings;
has 'Jobs' => (is => 'rw',isa=>ArrayRef[Iren::Job]);
…
method AddJob {
...
}

等等

正如你所看到的,它真的很简单 – 但是立即面临一些决策问题,例如:

>什么对象应该做unzip / zip / checkJob方法?它属于:JobRepository在作业“拉链”本身?
>哪些对象应该向用户发送电子邮件? $user-> send_email – 我很傻,因为我们发送电子邮件用户,而不是用户本身…
>“谁”应该将Job从用户的JobRepo发送到RenderQueue? JobRepo> SendJobToRenderQueue或者我应该调用一些RenderQueue-> addJob方法
>什么对象应该使用ISA IPC :: DirQueue – (应该是RenderQueue的实现)
>循环定义.用户有JobRepository,存储库有很多Jobs,但Job有?一个用户? (需要知道谁属于工作) – 等等..

正如你可以看到的,没有角色,没有特点在这里 – 没有 – 它很简单… – 但充满了问题:(

有人可以帮忙清理混乱吗?什么应该是“好”的包层次结构?

所以,我真的很迷失,我已经开始失望了.其他问题(我知道,这些是基于意见) – 但我必须问他们…

>如何学习Perl / Moose的良好对象设计? (我可能永远不会使用另一种语言)
>搜索google关于对象设计(和Stackoverflow)也多次引用了“Gand of Four”书(还有其他几本).但通常用于Java.值得买perl /麋?还是在这里另外一本好书给perl / moose?
>是一些很好的技术,如何检查正确的对象设计?
>来自UML的代码生成器可能不存在于Moose – 或者这里有可用的和推荐的?
>简单 – 你如何掌握对象层次结构/角色/特征等?当我正在阅读这些例子 – 我明白了$cat-> diets

猜你在找的Perl相关文章