UIの操作とかを楽に実装したくて

・リスナー(
 int channel変数とUnityEvent(決定、選択、選択解除など
操作に対応して発火)を持ってる。
 Startでキャスタークラスに自身を渡す。 

・キャスター(
 staticなリスナーのリストを持っている。
 staticな関数でリスナーを渡してもらい、ブロードキャスターに自身を委譲してリスナーを開示


・ブロードキャスター(
  int channel変数を持っている。キャスターが持っているクラスの中から自身のchannel
  と一致するリスナーのUnityEventを発火させる関数を持つ(決定、選択など)。
  channel変数を+1,-1できて指定の数字でループさせる、みたいな機能も持ってる。
  外部に委譲して関数を呼び出してもらう。


みたいな感じのクラスを作ってたんだけど、設計的に問題あったりしますか??
あまり長いゲームを作ったことがないのでアドバイスください。