Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns Web/企业应用程序中主要使用哪些设计模式?_Design Patterns_Web Applications_Enterprise - Fatal编程技术网

Design patterns Web/企业应用程序中主要使用哪些设计模式?

Design patterns Web/企业应用程序中主要使用哪些设计模式?,design-patterns,web-applications,enterprise,Design Patterns,Web Applications,Enterprise,Web/企业应用程序中使用的一些最常见的设计模式是什么?为什么使用这些模式 注意:为什么零件应该基于列出它们倾向于解决的问题的答案?模型视图控制器,用于将业务逻辑与表示层分离,以减少不必要的紧密耦合。 有关的详细信息,请参见或这是非常常见的。它的主要用途是确保您永远不会实例化一个给定类型的多个对象,这使得它可以很好地替代全局变量,而全局变量的名声绝对不好。有不同程度的论据支持和反对单例,一些人声称它和全局变量一样糟糕 我倾向于将其用于我通常称之为“经理”的一大类对象。例如,在需要多个数据库的大型

Web/企业应用程序中使用的一些最常见的设计模式是什么?为什么使用这些模式


注意:为什么零件应该基于列出它们倾向于解决的问题的答案?

模型视图控制器,用于将业务逻辑与表示层分离,以减少不必要的紧密耦合。
有关的详细信息,请参见或

这是非常常见的。它的主要用途是确保您永远不会实例化一个给定类型的多个对象,这使得它可以很好地替代全局变量,而全局变量的名声绝对不好。有不同程度的论据支持和反对单例,一些人声称它和全局变量一样糟糕

我倾向于将其用于我通常称之为“经理”的一大类对象。例如,在需要多个数据库的大型应用程序中,您不希望一直打开大量连接。我将有一个
DatabaseManager
类,它是一个单例,它将在内部管理到每个数据库的连接。消费对象可以调用
DatabaseManager::getConnection()
方法,管理者的任务是确保存在单个连接(如果必须打开连接),并将其返回给消费对象

这解决了在所有地方传递全局数据库连接的问题,附带的好处是高效地使用对象,因为只有一个数据库管理器存在。静态调用意味着任何需要它的消费者都可以使用它

模型视图控制器允许业务逻辑和表示层之间的低内聚,这是它的主要价值

通常,每个控制器都是一个
Servlet
,它处理单个页面的GET/POST请求,通过呈现正确的视图或将权限转移到另一个控制器来响应这些请求

Viwer将控制器传递的数据转换为Html、Xml、JavaScript、JSON或任何您喜欢的技术。查看器通常是一个
Servlet
或一个Servlet抽象,如JSP、ASP等

模型是应用程序操作所依据的数据的特定于域的表示形式。它还可以与域逻辑相结合,为数据提供意义(比如计算生日、购物车购物项目的总额或运费)。 模型应该封装数据,无论底层存储设施如何,都可以轻松访问

由于其与MVC的内聚性较低,您可以独立地更改、开发和测试每个组件

当底层存储机制是数据库时,通常使用此机制。ActiveRecord的基本含义是,所有对象属性都对应于基础数据库中的列,并且每个对象都包含插入、更新、删除(和加载)等函数

因此,每个类被转换成一个表或视图,每个对象成为所述表中的一行

这样做的原因很简单,因为您的类实现了访问和编辑数据库的方法,而不用编写额外的代码。再加上数据库的普及,这足以让这种模式保持有趣

另一个常用的是
PoolManager
是一种管理
资源
(无论是数据库、工厂方法还是连接)的工具。PoolManager保留一组初始化副本。 每当另一个进程或对象通过
PoolManager.acquire()
请求资源时,他就会从池中获取一个对象。
然后,他通过
resource.release()
操作资源的副本,并在完成后返回它。但是,对象不会被销毁,它只是返回到池中

用于提高性能。
例如,如果有一个工厂方法的检索成本很高(即响应速度很慢),那么它通常被包装在
PoolManager
中,并且N实例是在初始化
PoolManager
时创建的。这样,客户就不会觉得底层工厂运行缓慢,因为
PoolManager
为他们带来了性能上的损失。

我使用了很多

特别是在持久化/加载对象时。当我们不确定数据是否来自数据库、web服务或其他机制时,它会有所帮助

通过使用一个接口,允许多个源公开一个用于保存/检索的简单API,并允许对象本身知道要调用哪些API,我们最终得到了一个非常易于管理的体系结构


一个例子是。

工厂模式,大多数工厂对象和工厂方法非常常见,
e、 g.xml文档的DocumentFactory。

工厂模式的目的是简化对象创建。

我认为&pattern被开发人员广泛使用,但他们不知道他们实际上在使用。

我不知道从哪里开始,因为到处都可以找到模式(最终,在引擎盖下)。但让我们试试:

  • 我猜大多数(全部?)MVC框架都使用和[GoF]模式
  • 在分布式应用程序中,使用基于[GoF]设计模式的会话Facade(用Java中的会话bean实现)是非常常见的
  • ORMs实现了[PoEAA]模式(在Java世界中,Hibernate的
    会话
    、Toplink的
    工作单元
    、JDO的
    持久化管理器
  • 对于数据访问层,仍然经常使用数据访问对象模式抽象工厂[GoF]和工厂方法[GoF]是相关模式
  • 等等等等
    • 我发现这很有用: 这不是关于你问的问题,而是上面列出的一些设计模式。我强烈建议你阅读这本pdf格式的书

      希望这有帮助