Design patterns 前端控制器或任何其他控制器可以称为中介模式的示例吗?
我认为调解人和前线控制员的意图是相似的。两者基本上都控制/调节以促进松耦合 我知道调解人不是GOF模式。因此,从这个角度考虑,控制器/前端控制器可以称为中介模式的示例/子集Design patterns 前端控制器或任何其他控制器可以称为中介模式的示例吗?,design-patterns,Design Patterns,我认为调解人和前线控制员的意图是相似的。两者基本上都控制/调节以促进松耦合 我知道调解人不是GOF模式。因此,从这个角度考虑,控制器/前端控制器可以称为中介模式的示例/子集 如果没有,有人能给我一个来自真实系统、核心java或任何框架的具体例子吗?在这些框架中,它可以被称为前端控制器,但不能被称为中介,反之亦然。中介是您注入类中的依赖项,它们将使用这些类进行通信。不会创建中介,也不会创建它所帮助的类。此外,中介和具体类都相互了解。调解人控制多对多的通信网络 class MainApp { s
如果没有,有人能给我一个来自真实系统、核心java或任何框架的具体例子吗?在这些框架中,它可以被称为前端控制器,但不能被称为中介,反之亦然。中介是您注入类中的依赖项,它们将使用这些类进行通信。不会创建中介,也不会创建它所帮助的类。此外,中介和具体类都相互了解。调解人控制多对多的通信网络
class MainApp
{
static void Main()
{
var m = new ConcreteMediator();
var c1 = new ConcreteColleague1(m);
var c2 = new ConcreteColleague2(m);
m.Colleague1 = c1;
m.Colleague2 = c2;
c1.Send("How are you?");
c2.Send("Fine, thanks");
// Wait for user
Console.Read();
}
}
前端控制器是位于业务模型之上的对象,用于处理传入的web请求。在ASP.NET中,一个例子是HTTPHandler(一个控制所有传入请求并分派它们的对象)。前端控制器将“web服务器”逻辑与“处理特定请求”逻辑分离,因此它知道如何为其创建正确的对象。此外,它还用于在请求中执行AOP风格的行为注入
正如您所看到的,它们是非常不同的野兽:中介促进类与类之间的通信,前端控制器集中来自第三方的通信,并将其发送到单个适当的类。此外,中介器必须对所创建的类不可知——事实上,它是为了这个目的而注入的依赖项——而前端控制器必须根据上下文知道要创建哪个类——它可以使用工厂来实现这一点,但它仍然负责调用“create”方法
public class FrontController
{
public Response HandleRequest(Request request)
{
try
{
EnsureRequestIsValid(Request request);
var controller = FindController(request);
return controller.HandleRequest(request);
}
catch (Exception ex)
{
return new ErrorResponse(ex); // Exceptions become error pages!
}
}
private MVCController FindController(Request request)
{
// some logic here to choose and create the right MVC controller...
// in reality typically the current application introspects here to find
// the right controller and method, but you get my point...
if (Request.Path.StartsWith("/foo/"))
{
return new FooController();
}
}
private void EnsureRequestIsValid(Request request)
{
// the logic here is always executed, it should throw on error
}
}