[英]What is the name of that pattern in java?
java 中该模式的名称是什么? 请参阅RedirectAdultUserHandler1
和RedirectAdultUserHandler2
类的实现。
public class Main {
public static void main(String[] args) throws Exception {
new Main().run();
}
private void run() {
final List<User> users = Arrays.asList(
new User("john", 1),
new User("jeff", 22),
new User("jack", 333)
);
UserHandler handler1 = new RedirectAdultUserHandler1(new UserHandler());
UserHandler handler2 = new RedirectAdultUserHandler2();
handler1.processAll(users);
handler2.processAll(users);
}
}
class User {
private final String name;
private final int age;
User(final String name, final int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
class UserHandler {
public void processAll(List<User> users) {
users.forEach(user -> process(user, "users"));
System.out.println();
}
public void process(User user, String tableName) {
System.out.printf("%s stored into %s%n", user, tableName);
}
}
class RedirectAdultUserHandler1 extends UserHandler {
private final UserHandler original;
public RedirectAdultUserHandler1(final UserHandler original) {
this.original = original;
}
@Override
public void processAll(final List<User> users) {
original.processAll(users);
}
@Override
public void process(final User user, final String tableName) {
if (user.getAge() >= 18) {
original.process(user, "adult_users");
}
original.process(user, tableName);
}
}
class RedirectAdultUserHandler2 extends UserHandler {
@Override
public void process(final User user, final String tableName) {
if (user.getAge() >= 18) {
super.process(user, "adult_users");
}
super.process(user, tableName);
}
}
RedirectAdultUserHandler1
是一个装饰器,但是RedirectAdultUserHandler2
呢? 有什么名字吗?
这里没有使用任何模式。 RedirectAdultUserHandler2
和RedirectAdultUserHandler1
是UserHandler
的子类。 所以可以得出结论,这里只使用了inheritance 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.