基於簡單工廠模式的CAN報文解析

2021-10-04 19:12:02 字數 1149 閱讀 8578

所謂工廠模式,就是通過物件建立模式繞開new,來避免物件建立(new)過程中所導致的緊耦合,從而支援物件闖將的穩定。具體實現是通過定義乙個用於建立物件的介面,讓子類例項化哪乙個類,本例中應用的是簡單工廠模式,基類為parse_frame,定義了解析can報文的資料結構以及解析的方法,子類為parse_frame_a和parse_frame_b,在工廠frame_factory中生成返回相應的子類,再呼叫基類裡的函式,實現多型呼叫子類的解析或者其他方法,具體關係圖如下所示:

借用某老師的一句話,在設計**過程中,就是要尋找到**中穩定和變化,然後隔離變化,讓**高內聚,低耦合,以達到穩定的目的,就像中國武術中的太極一樣,要動中有靜,靜中有動,在其中找到一種平衡,使**穩定。

在解析基類parse_frame中定義了解析can報文的資料結構,和需要多型呼叫的虛函式,具體**如下:

#pragma once

/* @author:jack_young

@fuc: 定義了can報文的資料結構和解析基類

*/#include

#include

#include

#include

using

namespace std;

struct object_60a

;struct object_60b

;struct data_frame

;class

parse_frame

;

在解析子類中繼承父類,並重寫解析函式。

void parse_60a::

parse

(const can_frame* frame)

void parse_60b::

parse

(const can_frame* frame)

在工廠類中返回建立的子類物件。

class

frame_factory}}

;

for

(auto frame : v_data)

簡單工廠模式 XML解耦 反射

目錄 一 簡單工廠模式 二 簡單工廠模式角色 三 普通 例項 四 配置檔案 反射 五 uml圖 從字面意思看來就是要有乙個工廠類,那麼這個工廠類是幹什麼的呢?建立並返回乙個具體物件。應用場景如下 假如我們要做乙個計算器,它有很多個功能。加減乘除取餘乘方等,利用簡單工廠模式,我們要設計乙個計算類ope...

簡單的工廠模式

大學階段一直沒有好好地學習過設計模式,這是乙個遺憾。目前只實現了加 減 乘和除四種運算,像書中說的,我們需要考慮以後的擴充套件性,比如以後加上其他的運算等等。建立了乙個基類 operation,然後派生出四個類 加減乘除 operationadd operationsub operationmul ...

簡單工廠模式和工廠模式的區別

簡單工廠模式 就是通過有乙個工廠類傳遞過來乙個引數決定建立哪一張產品的例項。優點 產品類的等級結構不會反映到工廠類中。從而產品類的結構變化不會影響到工廠類的 變化。缺點是 增加新的產品需要改動對應的工廠類的變化 由於簡單工廠模式是作為靜態方法作為工廠方法,而靜態方法無法被子類繼承,因此工廠角色無法形...