外观模式 隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。
总结:为了简化操作。
使用: 1、客户端不需要知道系统内部的复杂联系,整个系统只需提供一个"接待员"即可。
现实场景: 1、去医院看病,可能要去挂号、门诊、划价、取药,让患者或患者家属觉得很复杂,如果有提供接待人员,只让接待人员来处理,就很方便。
实习案例:
namespace 外观模式
{
internal class Program
{
static void Main(string[] args)
{
VoiceShape voiceShape = new VoiceShape();
voiceShape.DrawRound();
voiceShape.DrawRectangle();
voiceShape.DrawSquare();
/*
* 控制台:
* 画圆形
画长方形
画正方形
*/
}
}
public interface Shape
{
void Draw();
}
public class Round : Shape
{
public void Draw()
{
Console.WriteLine("画圆形");
}
}
public class Rectangle : Shape
{
public void Draw()
{
Console.WriteLine("画长方形");
}
}
public class Square : Shape
{
public void Draw()
{
Console.WriteLine("画正方形");
}
}
// 创建 外观类
public class VoiceShape
{
private Shape round;
private Shape rectangle;
private Shape square;
public VoiceShape()
{
round = new Round();
rectangle = new Rectangle();
square = new Square();
}
public void DrawRound()
{
round.Draw();
}
public void DrawRectangle()
{
rectangle.Draw();
}
public void DrawSquare()
{
square.Draw();
}
}
}
缺点:不符合开闭原则,如果要改东西很麻烦,继承重写都不合适。