たとえば、私は一族と文字を持っています。リーダーである人物がいる。一族に特定の機能を与えるためには、キャラクターからいくらかのお金が必要です。この特定のケースでどのようなデザインを使用するのかは不明です
私は強くカップリングしたくないです。今、私はこのようclan
クラスのメンバを持っている:
bool clan::give_rank(character* chr, int rank)
{
if (!is_leader(chr.id()) || !chr->has_money(500))
return false;
this->rank_ = rank;
chr->take_money(500);
return true;
}
は、この密結合ですか?または、私は両方のクラスを接続するclan_mgrのようなセカンダリクラスを持っているはずですか?
bool clan_mngr::give_rank(character* chr, int rank)
{
clan* myclan = chr->get_clan();
if (!myclan || !myclan->is_leader(chr.id()) || !chr->has_money(500))
return false;
myclan->rank_ = rank;
chr->take_money(500);
return true;
}
//それともさらに悪いIMOに見えるこの1、:
bool character::give_rank_to_clan(int rank)
{
clan* myclan = chr->get_clan();
if (!myclan || !myclan->is_leader(id()) || !has_money(500))
return false;
myclan->rank_ = rank;
TakeMoney(500);
return true;
}