Facade パターン
ごちゃごちゃなクラス群を使用するための処理を、Facade(建物の正面の意味らしい)という窓口作ってそこに集約することで見やすくする感じ。あんまりおもしろくない。以下のコードはWikipediaのJAVA版をC++に直したもの。
#include<iostream> using namespace std; //some classes class Car { public : Car() : speed_(0),distance_(0){} void SetSpeed(int speed){ this->speed_ = speed; } void Run(int minutes){ this->distance_ += minutes * this->speed_; } int GetDistance(){ return this->distance_; } private : int speed_; int distance_; }; class Driver { public : Driver(Car *car) : car_(car){} ~Driver(){delete car_;} void PushPedal(int speed){ car_->SetSpeed(speed); } void Drive(int minutes){ car_->Run(minutes); } private : Car *car_; }; //Facade class DrivingSimulator { public : void Simulate(){ Car *c = new Car(); Driver *d = new Driver(c); d->PushPedal(700); d->Drive(30); d->PushPedal(750); d->Drive(20); cout << "The travel distance is " << c->GetDistance() << " m." << endl; delete d; } }; //main int main() { DrivingSimulator d; d.Simulate(); return 0; }