design patterns : adapter

This commit is contained in:
haerong22
2021-12-03 01:47:07 +09:00
parent b5592a6d89
commit 203487d80c
13 changed files with 258 additions and 0 deletions

View File

@@ -0,0 +1,42 @@
package adapter.after;
import adapter.after.security.UserDetails;
public class Account implements UserDetails {
private String name;
private String password;
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String getUsername() {
return this.name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}

View File

@@ -0,0 +1,28 @@
package adapter.after;
import adapter.after.security.UserDetails;
import adapter.after.security.UserDetailsService;
public class AccountService implements UserDetailsService {
public Account findAccountByUsername(String username) {
Account account = new Account();
account.setName(username);
account.setPassword(username);
account.setEmail(username);
return account;
}
public void createNewAccount(Account account) {
}
public void updateAccount(Account account) {
}
@Override
public UserDetails loadUser(String username) {
return findAccountByUsername(username);
}
}

View File

@@ -0,0 +1,22 @@
package adapter.after;
import adapter.after.security.UserDetails;
public class AccountUserDetails implements UserDetails {
private Account account;
public AccountUserDetails(Account account) {
this.account = account;
}
@Override
public String getUsername() {
return this.account.getName();
}
@Override
public String getPassword() {
return this.account.getPassword();
}
}

View File

@@ -0,0 +1,19 @@
package adapter.after;
import adapter.after.security.UserDetails;
import adapter.after.security.UserDetailsService;
public class AccountUserDetailsService implements UserDetailsService {
AccountService accountService;
public AccountUserDetailsService(AccountService accountService) {
this.accountService = accountService;
}
@Override
public UserDetails loadUser(String username) {
Account account = accountService.findAccountByUsername(username);
return new AccountUserDetails(account);
}
}

View File

@@ -0,0 +1,21 @@
package adapter.after;
import adapter.after.security.LoginHandler;
import adapter.after.security.UserDetailsService;
public class App {
public static void main(String[] args) {
// 클래스 따로 생성
// AccountService accountService = new AccountService();
// UserDetailsService userDetailsService = new AccountUserDetailsService(accountService);
// LoginHandler loginHandler = new LoginHandler(userDetailsService);
// String login = loginHandler.login("kim", "kim");
// System.out.println("login = " + login);
UserDetailsService userDetailsService = new AccountService();
LoginHandler loginHandler = new LoginHandler(userDetailsService);
String login = loginHandler.login("kim", "kim");
System.out.println("login = " + login);
}
}

View File

@@ -0,0 +1,19 @@
package adapter.after.security;
public class LoginHandler {
UserDetailsService userDetailsService;
public LoginHandler(UserDetailsService userDetailsService) {
this.userDetailsService = userDetailsService;
}
public String login(String username, String password) {
UserDetails userDetails = userDetailsService.loadUser(username);
if (userDetails.getPassword().equals(password)) {
return userDetails.getUsername();
} else {
throw new IllegalArgumentException();
}
}
}

View File

@@ -0,0 +1,9 @@
package adapter.after.security;
public interface UserDetails {
String getUsername();
String getPassword();
}

View File

@@ -0,0 +1,7 @@
package adapter.after.security;
public interface UserDetailsService {
UserDetails loadUser(String username);
}

View File

@@ -0,0 +1,35 @@
package adapter.before;
public class Account {
private String name;
private String password;
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}

View File

@@ -0,0 +1,21 @@
package adapter.before;
public class AccountService {
public Account findAccountByUsername(String username) {
Account account = new Account();
account.setName(username);
account.setPassword(username);
account.setEmail(username);
return account;
}
public void createNewAccount(Account account) {
}
public void updateAccount(Account account) {
}
}

View File

@@ -0,0 +1,19 @@
package adapter.before.security;
public class LoginHandler {
UserDetailsService userDetailsService;
public LoginHandler(UserDetailsService userDetailsService) {
this.userDetailsService = userDetailsService;
}
public String login(String username, String password) {
UserDetails userDetails = userDetailsService.loadUser(username);
if (userDetails.getPassword().equals(password)) {
return userDetails.getUsername();
} else {
throw new IllegalArgumentException();
}
}
}

View File

@@ -0,0 +1,9 @@
package adapter.before.security;
public interface UserDetails {
String getUsername();
String getPassword();
}

View File

@@ -0,0 +1,7 @@
package adapter.before.security;
public interface UserDetailsService {
UserDetails loadUser(String username);
}