[英]What is the name of that pattern in java?
What is the name of that pattern in java? java 中该模式的名称是什么? Please see the implementation of RedirectAdultUserHandler1
and RedirectAdultUserHandler2
classes.请参阅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);
}
}
The RedirectAdultUserHandler1
is a decorator, but what about the RedirectAdultUserHandler2
one? RedirectAdultUserHandler1
是一个装饰器,但是RedirectAdultUserHandler2
呢? Is there some name for that?有什么名字吗?
Here not any pattern is used.这里没有使用任何模式。 RedirectAdultUserHandler2
and RedirectAdultUserHandler1
are subclasses of UserHandler
. RedirectAdultUserHandler2
和RedirectAdultUserHandler1
是UserHandler
的子类。 So it can be concluded that just inheritance is used here.所以可以得出结论,这里只使用了inheritance 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.