dart_in_action/17_design_pattern_prototype...

50 lines
1.3 KiB
Dart
Raw Normal View History

2019-03-27 10:55:27 +08:00
/**
Prototype Pattern
使
1
2
3
4便
*/
main(List<String> args) {
Prototype p1 = ConcretePrototype('Tom');
Prototype p2 = p1.clone();
(p1 as ConcretePrototype)?.sayHello();
(p2 as ConcretePrototype)?.sayHello();
print(p1);
print(p2);
}
//////////////////////////////////////////////////////////////////
///
/// 定义一个原型接口
///
abstract class Prototype {
Prototype clone();
}
///
/// 实现原型接口
///
class ConcretePrototype implements Prototype {
String _name;
ConcretePrototype(this._name);
sayHello() {
print('Hello $_name');
}
@override
Prototype clone() {
return ConcretePrototype(_name);
}
}