言語Design Pattern-interface

1568 ワード


<モジュールがユーザに密接に接続されている場合>


上の図に示すように、ユーザーとモジュール間の緊密な接続が表示されます.
この場合、モジュールを使用するには、モジュールの内容を理解する必要があります.また、モジュール1,2を使用するには、ユーザが一部のアルゴリズムを実装しなければならない.モジュール1,2のアルゴリズムが変更されると、ユーザのコードも変更される.

<モジュールへのユーザーの接続が弱い場合>


インタフェースは、メイン関数に個別のアルゴリズムを実装する必要はなく、アルゴリズムを変更するときにユーザーコードを変更する必要もありません.
私たちはこれからこのような構造で符号化します.
C言語では、Main関数も起点です.したがって、コードを表示すると、まずmain関数が表示され、main関数は非常に重要です.したがってmain関数を作成する際に注意すべき点はいくつかあります.

<main関数を作成する際の注意事項>


1)実現アルゴリズムまたは論理
2)大量変数の初期化
3)過多な制御文
4)コード量が多すぎる
上記の注意事項はmain関数を複雑にし、その毒性と効率を低下させる.
mainで符号化する場合,インタフェース全体を設計して符号化することが重要である.
main関数には初期化関数と所定が含まれます.

<インタフェースとして設定>

typedef bool (*open_t)(void)
typedef bool (*close_t)(void)

typedef struct{
	open_t open;
    close_t close;
}uart_t 

static bool open(void);
static bool close(void);

uart_t* init_uart1(void)
{
	static uart_t uart;
    uart.open = open;
    uart.close = close;
    
    return &uart;
}

static bool open(void)
{
	//TODO: OPEN 함수 작성
	return TRUE;
}
static bool close(void)
{
	//TODO: CLOSE 함수 작성
    return TRUE;
}

int main(void)
{
	uart_t* uart1;
    uart1 = init_uart();
    
    uart1->open();
    uart1->close();
    
	return 0;
}

MCUは通常2つ以上のMCUを有するので、上記インタフェースを作成すればUART 2を実施してもuartのインタフェースを用いて実施することができる.