java - 这是什么设计模式?打印PersonsOlderThan

标签 java oop design-patterns decoupling

我阅读了很多关于设计模式的内容,但我仍然难以确定何时必须使用它们。今天我正在阅读有关 lambda 的 oracle 文档,看到一个类“进化”并说“嘿,显然这里有一些解耦”。我认为这里有一个众所周知的模式,但不知 Prop 体是哪个。

我还有一个问题是,如果我不使用 SPRING,其中关于接口(interface)和实现的文件夹结构非常清晰,这将是 - 根据 goog 实践 - 我必须在其中创建接口(interface)的项目结构。

示例以此代码开始:

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 - 这是什么设计模式?打印PersonsOlderThan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43264239/

相关文章:

c# - 隐藏/显示表单元素的设计模式

java - Java中的重构: Duplicated attributes

javascript - 理解为什么真正的原型(prototype)继承比经典/伪原型(prototype)继承更好,为什么我不应该使用 "new"

java - 返回 ImmutableMap 还是 Map 更好?

c# - 策略模式与依赖注入(inject)

php - 无法在准备好的语句中比较来自 mysql 的值

java - 如何使用 selenium webdriver 获取标签字段的颜色?

java - 找出正则表达式中匹配的 .* 是什么?

HibernateUtil 中的 java.lang.NullPointerException

java - 非阻塞限速 ThreadPoolExecutor