代码拉取完成,页面将自动刷新
同步操作将从 ryanpenn/dart_in_action 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
/**
过滤器模式(Filter Pattern)
允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。
这种类型的设计模式属于结构型模式,它结合多个标准来获得单一标准。
*/
main(List<String> args) {
List<Person> persons = List<Person>();
persons.add(Person("Robert", "Male", "Single"));
persons.add(Person("John", "Male", "Married"));
persons.add(Person("Laura", "Female", "Married"));
persons.add(Person("Diana", "Female", "Single"));
persons.add(Person("Mike", "Male", "Single"));
persons.add(Person("Bobby", "Male", "Single"));
Filter male = MaleFilter();
Filter female = FemaleFilter();
Filter single = SingleFilter();
Filter singleMale = AndFilter(single, male);
Filter singleOrFemale = OrFilter(single, female);
print("Males: ");
male.filter(persons).forEach((p) => print(p));
print("\nFemales: ");
female.filter(persons).forEach((p) => print(p));
print("\nSingle Males: ");
singleMale.filter(persons).forEach((p) => print(p));
print("\nSingle Or Females: ");
singleOrFemale.filter(persons).forEach((p) => print(p));
}
//////////////////////////////////////////////////////////////////
///
/// 创建一个类,在该类上应用过滤器
///
class Person {
String name;
String gender;
String maritalStatus;
Person(this.name, this.gender, this.maritalStatus);
@override
String toString() {
return 'Person[name="$name", gender="$gender", maritalStatus="$maritalStatus"]';
}
}
///
/// 创建一个过滤器接口
///
abstract class Filter {
List<Person> filter(List<Person> persons);
}
///
/// 创建实现了 Filter 接口的实体类
///
class MaleFilter implements Filter {
@override
List<Person> filter(List<Person> persons) {
List<Person> personList = List<Person>();
for (Person person in persons) {
if (person.gender.toUpperCase() == "MALE") {
personList.add(person);
}
}
return personList;
}
}
class FemaleFilter implements Filter {
@override
List<Person> filter(List<Person> persons) {
List<Person> personList = List<Person>();
for (Person person in persons) {
if (person.gender.toUpperCase() == "FEMALE") {
personList.add(person);
}
}
return personList;
}
}
class SingleFilter implements Filter {
@override
List<Person> filter(List<Person> persons) {
List<Person> personList = List<Person>();
for (Person person in persons) {
if (person.maritalStatus.toUpperCase() == "SINGLE") {
personList.add(person);
}
}
return personList;
}
}
class AndFilter implements Filter {
Filter _filter1;
Filter _filter2;
AndFilter(this._filter1, this._filter2);
@override
List<Person> filter(List<Person> persons) {
List<Person> personList = _filter1.filter(persons);
return _filter2.filter(personList);
}
}
class OrFilter implements Filter {
Filter _filter1;
Filter _filter2;
OrFilter(this._filter1, this._filter2);
@override
List<Person> filter(List<Person> persons) {
List<Person> personList1 = _filter1.filter(persons);
List<Person> personList2 = _filter1.filter(persons);
for (Person person in personList2) {
if (!personList1.contains(person)) {
personList1.add(person);
}
}
return personList1;
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。