当有多个对象之间对彼此都有耦合时,可能就需要一个中介者来消除这种耦合。比如一个二手房交易,牵涉到买方、卖方以及银行。在没有中介在场的情况,卖方找到买方定下买房协议,买方找到银行申请贷款,银行批准后找到卖方把贷款转给卖家:
- class Seller
- {
- void SellToBuyer(Buyer*);
- void GetMoneyFromBank(Bank*);
- };
- class Buyer
- {
- void BuyFromSeller(Seller*);
- void BorrowMoneyFromBank(Bank*);
- class Bank
- {
- void LoanMoneyToBuyer(Buyer*);
- void GiveMoneyToSeller(Seller*);
- };
这种情况下买家、卖家和银行都需要对彼此很了解。如果加入中介的话:
- class Mediator
- {
- // contact between buyer, seller and bank
- };
买家、卖家和银行只需要和中介打交道,而不需要与其他人交互。
- class Seller
- {
- void SellTo(Mediator*);
- void GetMoneyFrom(Mediator*);
- };
- class Buyer
- {
- void BuyFrom(Mediator*);
- void BorrowMoneyFrom(Mediator*);
- class Bank
- {
- void LoanMoneyTo(Mediator*);
- void GiveMoneyTo(Mediator*);
- };
中介的好处就是让所有参与的对象之间解耦,不好之处就是中介本身会变得极其复杂。
阅读(1697) | 评论(0) | 转发(0) |