dart_in_action/25_design_pattern_proxy.dart

61 lines
1.5 KiB
Dart
Raw Permalink Normal View History

2019-03-27 10:55:27 +08:00
/**
Proxy Pattern
访
访访访访使访访
使访
*/
main(List<String> args) {
Image image = new ProxyImage("dart_logo.png");
// 图像将从磁盘加载
image.display();
// 图像不需要从磁盘加载
image.display();
}
//////////////////////////////////////////////////////////////////
///
/// 创建一个接口
///
abstract class Image {
void display();
}
///
/// 创建实现接口的实体类
///
class RealImage implements Image {
String fileName;
RealImage(this.fileName) {
loadFromDisk(fileName);
}
@override
void display() {
print("Displaying $fileName");
}
void loadFromDisk(String fileName) {
print("Loading $fileName");
}
}
class ProxyImage implements Image {
RealImage realImage;
String fileName;
ProxyImage(this.fileName);
@override
void display() {
if (realImage == null) {
realImage = RealImage(fileName);
}
realImage.display();
}
}