Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1736396
  • 博文数量: 438
  • 博客积分: 9799
  • 博客等级: 中将
  • 技术积分: 6092
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-25 17:25
文章分类

全部博文(438)

文章存档

2019年(1)

2013年(8)

2012年(429)

分类: C/C++

2012-03-25 19:45:04

当有多个对象之间对彼此都有耦合时,可能就需要一个中介者来消除这种耦合。比如一个二手房交易,牵涉到买方、卖方以及银行。在没有中介在场的情况,卖方找到买方定下买房协议,买方找到银行申请贷款,银行批准后找到卖方把贷款转给卖家:
  1. class Seller
  2. {
  3.     void SellToBuyer(Buyer*);
  4.     void GetMoneyFromBank(Bank*);
  5. };

  6. class Buyer
  7. {
  8.     void BuyFromSeller(Seller*);
  9.     void BorrowMoneyFromBank(Bank*);

  10. class Bank
  11. {
  12.     void LoanMoneyToBuyer(Buyer*);
  13.     void GiveMoneyToSeller(Seller*);
  14. };

这种情况下买家、卖家和银行都需要对彼此很了解。如果加入中介的话:
  1. class Mediator
  2. {
  3.     // contact between buyer, seller and bank
  4. };

买家、卖家和银行只需要和中介打交道,而不需要与其他人交互。

  1. class Seller
  2. {
  3.     void SellTo(Mediator*);
  4.     void GetMoneyFrom(Mediator*);
  5. };

  6. class Buyer
  7. {
  8.     void BuyFrom(Mediator*);
  9.     void BorrowMoneyFrom(Mediator*);

  10. class Bank
  11. {
  12.     void LoanMoneyTo(Mediator*);
  13.     void GiveMoneyTo(Mediator*);
  14. };

中介的好处就是让所有参与的对象之间解耦,不好之处就是中介本身会变得极其复杂。
阅读(1647) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~