77 lines
1.5 KiB
Dart
77 lines
1.5 KiB
Dart
|
/**
|
|||
|
外观模式(Facade Pattern)
|
|||
|
|
|||
|
意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
|
|||
|
主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口。
|
|||
|
何时使用:
|
|||
|
1、客户端不需要知道系统内部的复杂联系,整个系统只需提供一个"接待员"即可。
|
|||
|
2、定义系统的入口。
|
|||
|
如何解决:客户端不与系统耦合,外观类与系统耦合。
|
|||
|
*/
|
|||
|
main(List<String> args) {
|
|||
|
ShapeMaker shapeMaker = new ShapeMaker();
|
|||
|
shapeMaker.drawCircle();
|
|||
|
shapeMaker.drawRectangle();
|
|||
|
shapeMaker.drawSquare();
|
|||
|
}
|
|||
|
|
|||
|
//////////////////////////////////////////////////////////////////
|
|||
|
|
|||
|
///
|
|||
|
/// 创建一个接口
|
|||
|
///
|
|||
|
abstract class Shape {
|
|||
|
void draw();
|
|||
|
}
|
|||
|
|
|||
|
///
|
|||
|
/// 创建实现接口的实体类
|
|||
|
///
|
|||
|
class Rectangle implements Shape {
|
|||
|
@override
|
|||
|
void draw() {
|
|||
|
print("Rectangle::draw()");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
class Square implements Shape {
|
|||
|
@override
|
|||
|
void draw() {
|
|||
|
print("Square::draw()");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
class Circle implements Shape {
|
|||
|
@override
|
|||
|
void draw() {
|
|||
|
print("Circle::draw()");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
///
|
|||
|
/// 创建一个外观类
|
|||
|
///
|
|||
|
class ShapeMaker {
|
|||
|
Shape circle;
|
|||
|
Shape rectangle;
|
|||
|
Shape square;
|
|||
|
|
|||
|
ShapeMaker() {
|
|||
|
circle = Circle();
|
|||
|
rectangle = Rectangle();
|
|||
|
square = Square();
|
|||
|
}
|
|||
|
|
|||
|
void drawCircle() {
|
|||
|
circle.draw();
|
|||
|
}
|
|||
|
|
|||
|
void drawRectangle() {
|
|||
|
rectangle.draw();
|
|||
|
}
|
|||
|
|
|||
|
void drawSquare() {
|
|||
|
square.draw();
|
|||
|
}
|
|||
|
}
|