享元模式
一、截图
二、代码示例

#include <iostream> #include <string> #include <vector> using namespace std; //棋子的颜色 enum PieceColor { BLACK, WHTIE }; //棋子的位置 struct PiecePos { int m_x; int m_y; PiecePos(int a, int b) :m_x(a), m_y(b) {} }; class Piece { public: Piece(PieceColor color) : m_color(color) { } ~Piece() {} virtual void draw() {} protected: PieceColor m_color; }; class BlackPiece :public Piece { public: BlackPiece(PieceColor color) :Piece(color) {} ~BlackPiece() {} void draw() { cout << "绘制一个黑棋 " << endl; } }; class WhitePiece :public Piece { public: WhitePiece(PieceColor color) :Piece(color) {} ~WhitePiece() {} void draw() { cout << "绘制一个白棋 " << endl; } }; class PieceBoard { public: PieceBoard(string black, string white) :m_blackName(black), m_WhiteName(white) { m_pBlackPiece = nullptr; m_pWhitePiece = nullptr; } ~PieceBoard() { clear(); } void setPiece(PieceColor color, PiecePos pos) { if (color == BLACK) { if(m_pBlackPiece == nullptr) m_pBlackPiece = new BlackPiece(color); cout << m_blackName << "在" << pos.m_x << "," << pos.m_y << "下了一步" << endl; m_pBlackPiece->draw(); } else { if(m_pWhitePiece == nullptr) m_pWhitePiece = new WhitePiece(color); cout << m_WhiteName << "在" << pos.m_x << "," << pos.m_y << "下了一步" << endl; m_pWhitePiece->draw(); } m_vecPiece.push_back(pos); } void clear() { delete m_pBlackPiece; delete m_pWhitePiece; } private: vector<PiecePos> m_vecPiece;//棋盘上的棋子, string m_blackName; string m_WhiteName; Piece* m_pBlackPiece; Piece* m_pWhitePiece; }; int main(void) { PieceBoard pieceBoard("laoxia", "laoding"); pieceBoard.setPiece(BLACK, PiecePos(44, 37)); pieceBoard.setPiece(WHTIE, PiecePos(19, 70)); pieceBoard.setPiece(BLACK, PiecePos(1, 1)); pieceBoard.setPiece(WHTIE, PiecePos(2, 2)); system("pause"); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!