设计模式(3)――结构性模式 (十)

2014-11-24 02:43:10 · 作者: · 浏览: 8
gg = new Pursuit1(mm);
}
public void GiveDolls()
{
gg.GiveDolls();
}
public void GiveFlowers()
{
gg.GiveFlowers();
}
public void GiveChocolate()
{
gg.GiveChocolate();
}
}
}
namespace 代理模式
{
class Class2
{
static void Main(string[] args)
{
SchoolGirl jiaojiao = new SchoolGirl();
jiaojiao.Name = "李娇娇";

Proxy1 daili = new Proxy1(jiaojiao);

daili.GiveDolls();
daili.GiveFlowers();
daili.GiveChocolate();

Console.ReadLine();
}
}

interface IGiveGift //追求者(真实实体)和代理的接口,代理和真实实体有相同的功能
{
void GiveDolls();
void GiveFlowers();
void GiveChocolate();
}
class Pursuit1 : IGiveGift //追求者(真实实体)
{
SchoolGirl mm;
public Pursuit1(SchoolGirl mm)
{
this.mm = mm;
}
public void GiveDolls()
{
Console.WriteLine(mm.Name +"送你洋娃娃");
}
public void GiveFlowers()
{
Console.WriteLine(mm.Name+"送你鲜花");
}
public void GiveChocolate()
{
Console.WriteLine(mm.Name +"送你巧克力");
}
}
class Proxy1 : IGiveGift //代理
{
Pursuit1 gg;
public Proxy1(SchoolGirl mm)
{
gg = new Pursuit1(mm);
}
public void GiveDolls()
{
gg.GiveDolls();
}
public void GiveFlowers()
{
gg.GiveFlowers();
}
public void GiveChocolate()
{
gg.GiveChocolate();
}
}
}


12. 外观模式

为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。增加外观可以提供一个简单的接口,减少他们之间的依赖。通过接口可以实现一系列已经封装好的方法。(比如我们身边的移动公司,10086的客服就扮演着一个外观的角色,通过它你可以办理你需要的若干个业务)


UML图:

\


代码:

view plaincopy to clipboardprint //外观模式将不同的层之间进行分离,层与层之间建立外观,为复杂的子系统提供一个简单的接口,耦合性大大降低
namespace 外观模式
{
class Class2
{
static void Main(string[] args)
{
Facde facde = new Facde();
facde.MethodA(); //有外观类的作用,客户可以不知道子系统的作用而通过外观类进行调用(就像基金一样,基金是由若干支股票组成的)
facde.MethodB();
Console.Read();

}
}

//四个子系统类
class SubSystemOne
{
public void MethodOne()
{
Console.WriteLine("子系统方法1");
}
}
class SubSystemTwo
{
public void MethodTwo()
{
Console.WriteLine("子系统方法2");
}
}
class SubSystemThree
{
public void MethodThree()
{
Console.WriteLine("子系统方法3");
}
}
class SubSystemFour
{
public void MethodFour()
{
Console.WriteLine("子系统方法4");
}
}

//外观类
class Facde
{
SubSystemOne one;
SubSystemTwo two;
SubSystemThree three;
SubSystemFour four;

public Facde()
{
one = new SubSystemOne();
two = new SubSystemTwo();
three = new SubSystemThree();
four = new SubSystemFour();
}
public void MethodA()
{
Console.WriteLine("\n方法组A()——");
one.Met