最初は他のサンプルをたくさんみて、自分で試行錯誤してみるしかないよ

自分なら、BattleFieldクラスを用意して、その中で天候の変化を処理する
例えば魔法クラスの中にcastWeather( BattleField bf )メソッドを作っておいて
キャラクタの魔法を唱える処理の中から、今まさに戦っているフィールドを引数にして
castWeatherをコールする。
もし魔法をもっと細分化したければMagic基本クラスを用意して、魔法の数だけ派生クラスを作る。
例えばMagicBaseクラスからMagicWeather/MagicFire/MagicThunderなどのクラスを別々に用意する。
細分化のメリットは1つ1つの魔法処理が膨大になるようなとき整理整頓できていて管理しやすくなる。
これを細分化しなければ、当然Magicクラスの中に全ての魔法の処理が縦に並ぶことになる。