首页 > 编程知识 正文

mvc设计模式分为哪三层,c++14新特性

时间:2023-05-06 08:41:48 阅读:168231 作者:3883

定义:访问者模式。 表示活动bldbb对象结构中每个元素的操作。 这样,您就可以定义影响这些元素的新操作,而无需更改每个元素的类。 访问者模式适用于数据结构相对稳定的系统。 可以解除数据结构和作用于结构的操作的结合,使操作几何可以比较自由地进化。 访问者模式的目的是将处理与数据结构分离。 很多系统可以按算法和数据结构划分,当这种系统有比较稳定的数据结构,有容易变化的算法时,适合使用访问者模型。

//VisitorModel.h文件# pragma once # include iostream # include string # includealgorithmclassvisitor; //受访问元素class element { protected : STD : stringm _ strname; public : element (STD :3360 stringstr ) {m_strName=str; } STD :字符串getname () {return m_strName; } virtualvoidaccept (visitor * visitor )=0; (; classconcreteelementa :公共元素{公共: concreteelementa { STD 33603360 stringstr } 3360元素{ str } void (; classconcreteelementb :公共元素{公共: concreteelementb { STD 33603360 stringstr } 3360元素{ str } void (; //访问者class visitor (public : virtualvoidvisitconcreteelementa (concreteelementa * p )=0; virtualvoidvisitconcreteelementb (concreteelementb * p )=0; (; classconcretevisitora 3360 public visitor { public : voidvisitconcreteelementa (concreteelementa * p ) STD3360:cout' } voidvisitconcreteelementb (concreteelementb * p ) STD 3360: cout ' concretevisitora访问“p-getname”STD 3360: etd ; classconcretevisitorb : public visitor { public : voidvisitconcreteelementa (concreteelementa * p ) STD3360:cout' } voidvisitconcreteelementb (concreteelementb * p ) STD 3360: cout ' concretevisitorb访问“p-getname”STD 3360: etd ; voidconcreteelementa : accept (visitor * visitor ) visitor-visitconcreteelementa (this ) ); } voidconcreteelementb : accept (visitor * visitor ) visitor-visitconcreteelementb (this ); //集成类classobjectstructure { private : STD 33603360 vector element * m _ vec; public :至object structure () (for ) autoit=m_vec.begin ); 信息技术!=m_vec.end (; it ) {delete *it; }m_vec.clear (; }voidadd(element*p ) m_vec.push_back ) p; }voidaccept(visitor*visitor ) for ) autoit=m_vec.cbegin ); 信息技术!=m_vec.cend (; it ) () it ) -访问)查看器; }; }; int main () {using namespace std; //访问者模式object structure * p=new object structure (; p-add(newconcreteelementa ) ) a ); p-add(newconcreteelementb ) (b ); concretevisitora * pvisitora=newconcretevisitora (concretevisitorb * pvisitorb=newconcretevisitorb (; p-accept(pvisitora ); p-accept(pvisitorb ); delete pVisitorA; delete pVisitorB; 删除p; getchar (; 返回0; }老实说,我看的也很无知,还有这里面的模式。 结合代码来看定义,可以解除数据结构和作用于结构的操作的结合,使操作几何比较自由地进化。 这个不需要凝聚系统ObjectStructure就做得很好呢。 增加新操作很简单,但还是不知道ObjectStructure的意思。 应该增加的操作也不少。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。