Design patterns MVC模型和桥梁设计模式之间有联系吗?
我试着研究桥的设计模式,在网上偶然发现了各种各样的答案。最终,我想我掌握了窍门。如果我在这方面有错误,请随时纠正我,但我可以使用桥接模式将特定数据与如何呈现特定数据分离 当我了解到这一点时,我突然意识到我已经熟悉了一些相同性质的东西,MVC模型,其中声明我们有一个模型(数据)、一个视图(要呈现的UI)和一个查询模型以支持视图的控制器Design patterns MVC模型和桥梁设计模式之间有联系吗?,design-patterns,model-view-controller,Design Patterns,Model View Controller,我试着研究桥的设计模式,在网上偶然发现了各种各样的答案。最终,我想我掌握了窍门。如果我在这方面有错误,请随时纠正我,但我可以使用桥接模式将特定数据与如何呈现特定数据分离 当我了解到这一点时,我突然意识到我已经熟悉了一些相同性质的东西,MVC模型,其中声明我们有一个模型(数据)、一个视图(要呈现的UI)和一个查询模型以支持视图的控制器 那么,这两件事之间是否存在关联,或者只是我对桥接模式感到困惑?如果有更多关于桥接模式的内容,请告诉我。桥接是一种通用模式,扩展了我们通常实现多态性的方式。 例如,考
那么,这两件事之间是否存在关联,或者只是我对桥接模式感到困惑?如果有更多关于桥接模式的内容,请告诉我。桥接是一种通用模式,扩展了我们通常实现多态性的方式。 例如,考虑绘制形状的典范例子。
Abstract Class Shape(
abstract function draw();
)
Class Circle extends Shape(
draw(){ /*draw a circle*/}
)
Class Square extends Shape(
draw(){ /*draw a square*/}
)
现在,我们可以创建一个形状数组(正方形和圆形的协同显示),并告诉数组中的每个对象在每个元素上使用shape->draw()进行自身绘制。(所有伪代码)
现在假设在不同的系统上绘制圆和正方形的方式不同。我们可以添加新的抽象draw()函数,如drawWindows()和drawXwin()以及相应的实现
或者,我们可以在实现drawAPI的对象中使用桥接和传递(并且我们可以有许多不同绘制方式的具体子类)
Abstract Class Shape(
protected drawAPI; // object that implements drawAPI
abstract function draw();
Shape( drawAPIin){ // constructor
drawAPI = drawAPIin;
}
)
Class Circle extends Shape(
draw(){ drawAPI->draw();}
)
Class Square extends Shape(
draw(){ drawAPI->draw();}
)
现在,我们仍然可以创建一个形状数组(正方形和圆形的协同显示),并告诉数组中的每个对象在每个元素上使用shape->draw()绘制自己,但这次将根据传递给shape构造函数的drawAPI对象的draw()绘制()(获取?:-)。无论如何,这是一种非常灵活的方法
将其与MVC联系起来,MVC是一种专门的模式,最常用于分离数据存储/检索(模型的功能)、数据显示和用户输入(视图的功能)以及在模型和视图(控制器的功能)之间编组数据。MVC模式有几种变体,可以在各种前端和后端web开发框架中看到
正如您所看到的,桥接模式和MVC的意图是完全不同的,尽管正如您所指出的,可能存在重叠点。虽然将它们视为同一模式的不同名称可能不是完全正确的,但正如你们所指出的那样,它们的连接方式与大多数GOF模式重叠并以多种方式连接。
当我们在思考问题时提高抽象级别时,想法和解决方案似乎经常合并并看起来相似。但魔鬼和回报在于细节,一个好的起点是仔细观察每个模式的意图,了解它们的差异。模型视图控制器主要是分离关注点的练习。“桥接模式”是另一种模式,主要与在运行时指定执行有关。看到和