组织业务层服务
Organizing service of BusinessLayer
目前正在考虑在业务层实现服务的策略。我的第一个方法是为每个 class 实现一个服务功能,但是功能的数量最终会增加并且变得难以从表示层调用,因为 id 必须记住它们(大量 classes) .相反的替代方案是使用一个 class 实现所有服务,这将创建一个巨大的文件。
我见过在每个 class 中实现功能(方法)的实现,例如(ProductBLL 或 CompanyBLL),这将使服务更易于管理,但是某些服务,例如 "getmeProductsAndCompanies"有点频繁似乎既不属于 ProductBLL 也不属于 CompanyBLL。
我的问题是:制作一个 class AplicationService 是否是个好主意,每个服务都有一个方法来实例化正确的 ServiceClass 和正确的方法?我的目标是在 PL AplicationService 中实例化为 as.getmeProductsAndCompanies()
到目前为止,我通过的互联网 material 具有非常理论化或非常复杂的解决方案。我也乐于接受建议。
使用composite pattern。基本上,您可以创建尽可能多的小 classes / 函数。然后那些部分将被 bigger class/function 调用。然后更大的class也可以被更大的class再次使用。
My first approach was to implement a service functionality per class,
but the number of functionalities will eventually grow and become hard
to call from presentation layer since id have to remember them all
(Large amounts of classes)
我不认为将所有服务聚合到一个外观中会有帮助。这只会使他们复杂化。考虑构建服务并为它们设计一些命名模式。
例如,您有 OrderService
可以根据订单执行所有操作(名称选择不当,顺便说一句 ;))。最终它变得太大了,当这种情况发生时,你必须把它一分为二。拆分时,必须使用函数式方法命名。服务名称必须回答问题 "What does this service do exactly and with what types of data"。例如,OrderDisplayService
对我来说是个不错的选择。
当您必须找出需要将哪个服务注入到您的调控器实体(通常是类似 MVC 的控制器)时,您必须首先键入服务名称空间名称 (\Acme\Services\
),然后是您想要的对象名称处理 (Order
),然后键入一个动词,描述你想要用它做什么 (Display
),然后按你的 IDE 自动完成按钮。您将有一个相对较短的服务列表,可用于注入(我想您为此使用了一些 IoC 容器)。
将您的服务拆分为层或单元,这样当您在 IDE 中工作时,您只能在当前展开的目录中看到其中功能完整的部分
目前正在考虑在业务层实现服务的策略。我的第一个方法是为每个 class 实现一个服务功能,但是功能的数量最终会增加并且变得难以从表示层调用,因为 id 必须记住它们(大量 classes) .相反的替代方案是使用一个 class 实现所有服务,这将创建一个巨大的文件。
我见过在每个 class 中实现功能(方法)的实现,例如(ProductBLL 或 CompanyBLL),这将使服务更易于管理,但是某些服务,例如 "getmeProductsAndCompanies"有点频繁似乎既不属于 ProductBLL 也不属于 CompanyBLL。
我的问题是:制作一个 class AplicationService 是否是个好主意,每个服务都有一个方法来实例化正确的 ServiceClass 和正确的方法?我的目标是在 PL AplicationService 中实例化为 as.getmeProductsAndCompanies()
到目前为止,我通过的互联网 material 具有非常理论化或非常复杂的解决方案。我也乐于接受建议。
使用composite pattern。基本上,您可以创建尽可能多的小 classes / 函数。然后那些部分将被 bigger class/function 调用。然后更大的class也可以被更大的class再次使用。
My first approach was to implement a service functionality per class, but the number of functionalities will eventually grow and become hard to call from presentation layer since id have to remember them all (Large amounts of classes)
我不认为将所有服务聚合到一个外观中会有帮助。这只会使他们复杂化。考虑构建服务并为它们设计一些命名模式。
例如,您有 OrderService
可以根据订单执行所有操作(名称选择不当,顺便说一句 ;))。最终它变得太大了,当这种情况发生时,你必须把它一分为二。拆分时,必须使用函数式方法命名。服务名称必须回答问题 "What does this service do exactly and with what types of data"。例如,OrderDisplayService
对我来说是个不错的选择。
当您必须找出需要将哪个服务注入到您的调控器实体(通常是类似 MVC 的控制器)时,您必须首先键入服务名称空间名称 (\Acme\Services\
),然后是您想要的对象名称处理 (Order
),然后键入一个动词,描述你想要用它做什么 (Display
),然后按你的 IDE 自动完成按钮。您将有一个相对较短的服务列表,可用于注入(我想您为此使用了一些 IoC 容器)。
将您的服务拆分为层或单元,这样当您在 IDE 中工作时,您只能在当前展开的目录中看到其中功能完整的部分