Adapter

// LegacyRectangle.h

#ifndef _LEGACYRECTANGLE_H

#define _LEGACYRECTANGLE_H

class LegacyRectangle {

public:

void draw();

LegacyRectangle(int x1, int y1, int x2, int y2);

};

#endif

說明

    • 設計新類別改變原類別定義。
    • LegacyRectangle 類別由 2 組座標所定義。
    • AdapterRectangle 類別由左上角座標與長寬所定義。
      • 內部生成 LegacyRectangle 物件。
    • Client 調用 AdapterRectangle 物件。

// AdapterRectangle.h

#ifndef _ADAPTERRECTANGLE_H

#define _ADAPTERRECTANGLE_H

#include "Rectangle.h"

class LegacyRectangle;

class AdapterRectangle : public Rectangle {

private:

LegacyRectangle * ;

public:

void draw();

AdapterRectangle(int x, int y, int width, int length);

};

#endif