【发布时间】:2018-06-02 06:26:13
【问题描述】:
我阅读了很多关于设计模式的文章,但我仍然难以确定何时必须使用它们。今天我在阅读关于 lambdas 的 oracle 文档,看到一个类“进化”并说“嘿,显然这里有一些解耦”。我认为这里有一个众所周知的模式,但不知道具体是哪一个。
我对此还有一个问题是,如果我不使用 SPRING,其中关于接口和实现的文件夹结构非常清晰,这将是 - 根据 goog 实践 - 我必须创建接口的项目结构。
示例以以下代码开头:
public static void printPersonsOlderThan(List<Person> roster, int age) {
for (Person p : roster) {
if (p.getAge() >= age) {
p.printPerson();
}
}
}
然后继续:
public static void printPersonsWithinAgeRange(
List<Person> roster, int low, int high) {
for (Person p : roster) {
if (low <= p.getAge() && p.getAge() < high) {
p.printPerson();
}
}
}
并以此结束:
public static void printPersons(
List<Person> roster, CheckPerson tester) {
for (Person p : roster) {
if (tester.test(p)) {
p.printPerson();
}
}
}
创建了这个接口:
interface CheckPerson {
boolean test(Person p);
}
这就是实现:
class CheckPersonEligibleForSelectiveService implements CheckPerson {
public boolean test(Person p) {
return p.gender == Person.Sex.MALE &&
p.getAge() >= 18 &&
p.getAge() <= 25;
}
}
【问题讨论】:
-
这里的问题到底是什么?
-
您在这里看到设计模式了吗?如果是的话……哪一个?
标签: java oop design-patterns decoupling