Add example of visitor pattern in C++
This commit is contained in:
32
cpp/patterns/visitor/visitor.cpp
Normal file
32
cpp/patterns/visitor/visitor.cpp
Normal file
@@ -0,0 +1,32 @@
|
||||
|
||||
#include "visitor.hpp"
|
||||
|
||||
|
||||
/******************************************************************************/
|
||||
// Concrete components
|
||||
|
||||
void Gear::accept(PartVisitor *v)
|
||||
{
|
||||
v->visit(this);
|
||||
}
|
||||
|
||||
void Spring::accept(PartVisitor *v)
|
||||
{
|
||||
v->visit(this);
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************/
|
||||
// Concrete visitors
|
||||
|
||||
void PartVisitor::visit(Gear *g)
|
||||
{
|
||||
std::cout << g->getName() << " is price " << g->getPrice() << " with radius of "
|
||||
<< g->getRadius() << std::endl;
|
||||
}
|
||||
|
||||
void PartVisitor::visit(Spring *g)
|
||||
{
|
||||
std::cout << g->getName() << " is price " << g->getPrice()
|
||||
<< " with elasticity of " << g->getElasticity() << std::endl;
|
||||
}
|
||||
Reference in New Issue
Block a user