c23种设计模式4外观模式Word文档格式.docx

上传人:b****2 文档编号:14506579 上传时间:2022-10-23 格式:DOCX 页数:11 大小:88.13KB
下载 相关 举报
c23种设计模式4外观模式Word文档格式.docx_第1页
第1页 / 共11页
c23种设计模式4外观模式Word文档格式.docx_第2页
第2页 / 共11页
c23种设计模式4外观模式Word文档格式.docx_第3页
第3页 / 共11页
c23种设计模式4外观模式Word文档格式.docx_第4页
第4页 / 共11页
c23种设计模式4外观模式Word文档格式.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

c23种设计模式4外观模式Word文档格式.docx

《c23种设计模式4外观模式Word文档格式.docx》由会员分享,可在线阅读,更多相关《c23种设计模式4外观模式Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。

c23种设计模式4外观模式Word文档格式.docx

ade模式,现在来考虑这样一个抵押系统,当有一个客户来时,有如下几件事情需要确认:

到银行子系统查询他是否有足够多的存款,到信用子系统查询他是否有良好的信用,到贷款子系统查询他有无贷款劣迹。

只有这三个子系统都通过时才可进行抵押。

我们先不考虑Faç

ade模式,那么客户程序就要直接访问这些子系统,分别进行判断。

类结构图下:

在这个程序中,我们首先要有一个顾客类,它是一个纯数据类,并无任何操作,示意代码:

//顾客类

public 

class 

Customer

{

private 

string 

_name;

Customer(string 

name)

this._name 

name;

}

10 

11 

Name

12 

13 

get 

return 

14 

15 

下面这三个类均是子系统类,示意代码:

//银行子系统

Bank

bool 

HasSufficientSavings(Customer 

c, 

int 

amount)

Console.WriteLine("

Check 

bank 

for 

"

c.Name);

true;

//信用子系统

Credit

HasGoodCredit(Customer 

c)

16 

credit 

17 

18 

19 

20 

21 

//贷款子系统

22 

Loan

23 

24 

HasNoBadLoans(Customer 

25 

26 

loans 

27 

28 

29 

看客户程序的调用:

//客户程序

MainApp

const 

_amount 

12000;

static 

void 

Main()

Bank 

new 

Bank();

Loan 

loan 

Loan();

Credit 

Credit();

Customer 

customer 

Customer("

Ann 

McKinsey"

);

eligible 

if 

(!

bank.HasSufficientSavings(customer, 

_amount))

false;

else 

loan.HasNoBadLoans(customer))

credit.HasGoodCredit(customer))

\n"

customer.Name 

has 

been 

(eligible 

?

Approved"

:

Rejected"

));

30 

Console.ReadLine();

31 

32 

可以看到,在不用Faç

ade模式的情况下,客户程序与三个子系统都发生了耦合,这种耦合使得客户程序依赖于子系统,当子系统化时,客户程序也将面临很多变化的挑战。

一个合情合理的设计就是为这些子系统创建一个统一的接口,这个接口简化了客户程序的判断操作。

看一下引入Faç

ade模式后的类结构图:

外观类Mortage的实现如下:

/外观类

Mortgage

IsEligible(Customer 

cust, 

{0} 

applies 

{1:

C} 

loan\n"

cust.Name, 

amount);

bank.HasSufficientSavings(cust, 

amount))

loan.HasNoBadLoans(cust))

credit.HasGoodCredit(cust))

eligible;

顾客类和子系统类的实现仍然如下:

//信用证子系统

33 

34 

35 

36 

37 

38 

this.name 

39 

40 

41 

42 

43 

44 

45 

而此时客户程序的实现:

//客户程序类

//外观

Mortgage 

mortgage 

Mortgage();

eligable 

mortgage.IsEligible(customer, 

125000);

+

(eligable 

可以看到引入Faç

ade模式后,客户程序只与Mortgage发生依赖,也就是Mortgage屏蔽了子系统之间的复杂的操作,达到了解耦内部子系统与客户程序之间的依赖。

.NET架构中的Faç

ade模式

Faç

ade模式在

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 法语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1