代码拉取完成,页面将自动刷新
同步操作将从 ryanpenn/dart_in_action 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
/**
空对象模式(Null Object Pattern)
一个空对象取代 NULL 对象实例的检查。
Null 对象不是检查空值,而是反应一个不做任何动作的关系。
这样的 Null 对象也可以在数据不可用的时候提供默认的行为。
在空对象模式中,我们创建一个指定各种要执行的操作的抽象类和扩展该类的实体类,还创建一个未对该类做任何实现的空对象类,该空对象类将无缝地使用在需要检查空值的地方。
*/
main(List<String> args) {
AbstractCustomer customer1 = CustomerFactory.getCustomer("Rob");
AbstractCustomer customer2 = CustomerFactory.getCustomer("Bob");
AbstractCustomer customer3 = CustomerFactory.getCustomer("Julie");
AbstractCustomer customer4 = CustomerFactory.getCustomer("Laura");
print("Customers");
print(customer1.getName());
print(customer2.getName());
print(customer3.getName());
print(customer4.getName());
}
//////////////////////////////////////////////////////////////////
///
/// 创建一个抽象类
///
abstract class AbstractCustomer {
String _name;
bool isNil();
String getName();
}
///
/// 创建扩展了上述类的实体类
///
class RealCustomer extends AbstractCustomer {
RealCustomer(String name) {
this._name = name;
}
@override
String getName() {
return _name;
}
@override
bool isNil() {
return false;
}
}
class NullCustomer extends AbstractCustomer {
@override
String getName() {
return "Not Available in Customer Database";
}
@override
bool isNil() {
return true;
}
}
///
/// 创建 CustomerFactory 类
///
class CustomerFactory {
static final List<String> _names = ["Rob", "Joe", "Julie"];
static AbstractCustomer getCustomer(String name) {
for (int i = 0; i < _names.length; i++) {
if (_names[i] == name) {
return new RealCustomer(name);
}
}
return new NullCustomer();
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。