会员
周边
众包
新闻
博问
闪存
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
alonestarsz
博客园
首页
新随笔
联系
订阅
管理
公告
在DotNet中实现Bridge模式
using
System;
namespace
Bridge.CoffeeBridgeImp
{
/**/
///
<summary>
///
Coffee 的摘要说明。
///
</summary>
public
abstract
class
Coffee
{
private
CoffeeImp coffeeImp ;
public
CoffeeImp getCoffeeImp()
{
return
this
.coffeeImp;
}
public
void
setCoffeeImp()
{
this
.coffeeImp
=
CoffeeImpSingleton.getCoffeeImp();
}
}
/**/
///
<summary>
///
加不加奶的行为接口
///
</summary>
public
abstract
class
CoffeeImp
{
public
abstract
void
pourCoffeeImp(
string
name) ;
}
/**/
///
<summary>
///
CoffeeImpSingleton 的摘要说明。
///
</summary>
public
class
CoffeeImpSingleton
{
private
static
CoffeeImp coffeeImp;
public
static
CoffeeImp getCoffeeImp ()
{
return
coffeeImp;
}
public
CoffeeImpSingleton(CoffeeImp coffeeImp)
{
CoffeeImpSingleton.coffeeImp
=
coffeeImp;
}
}
/**/
///
<summary>
///
FragrantCoffeeImp 的摘要说明。
///
</summary>
public
class
FragrantCoffeeImp:CoffeeImp
{
public
FragrantCoffeeImp()
{
//
//
TODO: 在此处添加构造函数逻辑
//
}
public
override
void
pourCoffeeImp(
string
name )
{
Console.WriteLine(name
+
"
什么也没加,清香
"
);
}
}
/**/
///
<summary>
///
中杯
///
</summary>
public
class
MediumCoffee :Coffee
{
public
MediumCoffee()
{
base
.setCoffeeImp();
}
public
void
pourCoffee()
{
CoffeeImp coffeeImp
=
this
.getCoffeeImp();
for
(
int
index
=
0
; index
<
2
; index
++
)
coffeeImp.pourCoffeeImp(
"
小杯
"
);
}
}
/**/
///
<summary>
///
MilkCoffeeImp 的摘要说明。
///
</summary>
public
class
MilkCoffeeImp :CoffeeImp
{
public
MilkCoffeeImp()
{
//
//
TODO: 在此处添加构造函数逻辑
//
}
public
override
void
pourCoffeeImp(
string
name)
{
Console.WriteLine(name
+
"
加了美味的牛奶
"
);
}
}
/**/
///
<summary>
///
SuperSizeCoffee 的摘要说明。
///
</summary>
public
class
SuperSizeCoffee:Coffee
{
public
SuperSizeCoffee()
{
base
.setCoffeeImp();
}
public
void
pourCoffee()
{
CoffeeImp coffeeImp
=
base
.getCoffeeImp();
for
(
int
index
=
0
; index
<
5
; index
++
)
coffeeImp.pourCoffeeImp(
"
大杯
"
);
}
}
一下为测试代码
/**/
///
<summary>
///
BridgeTest 测试Bridge模式
///
</summary>
class
BridgeTest
{
/**/
///
<summary>
///
应用程序的主入口点。
///
</summary>
[STAThread]
static
void
Main(
string
[] args)
{
//
//
TODO: 在此处添加代码以启动应用程序
//
//
拿出牛奶
//
CoffeeImpSingleton coffeeImpSingleton = new CoffeeImpSingleton(new FragrantCoffeeImp());
CoffeeImpSingleton coffeeImpSingleton
=
new
CoffeeImpSingleton(
new
MilkCoffeeImp());
//
中杯加奶
MediumCoffee mediumCoffee
=
new
MediumCoffee();
mediumCoffee.pourCoffee();
//
大杯加奶
SuperSizeCoffee superSizeCoffee
=
new
SuperSizeCoffee();
superSizeCoffee.pourCoffee();
Console.ReadLine();
}
}
}
posted on
2004-11-19 16:29
天煞孤星
阅读(
420
) 评论(
0
)
编辑
收藏
举报
会员力量,点亮园子希望
刷新页面
返回顶部
Powered by:
博客园
Copyright © 2024 天煞孤星
Powered by .NET 8.0 on Kubernetes