![](https://velog.velcdn.com/images/calaf/post/019e9e4c-e695-4f65-9a2d-32430c49d668/image.png)
Presentation Tier
- 프리젠테이션 계층은 일반 사용자가 애플리케이션과 상호작용하는 애플리케이션의 사용자 인터페이스 및 통신 계층입니다. 주요 목적은 정보를 표시하고 사용자로부터 정보를 수집하는 것입니다. 이 최상위 레벨 계층은 예를 들어 웹 브라우저, 데스크탑 애플리케이션 또는 그래픽 사용자 인터페이스(GUI)에서 실행될 수 있습니다. 웹 프리젠테이션 계층은 일반적으로 HTML, CSS 및 JavaScript를 사용하여 개발됩니다. 데스크탑 애플리케이션은 플랫폼에 따라 다양한 언어로 작성될 수 있습니다.
- UI(User-Interface)
- 위키 정의
- 사람(사용자)과 컴퓨터시스템 사이의 의사소통 매개를 의미한다. 이 의사소통은 해당 기기에 대해 효율적인 작동과 사용자의 제어를 보장하는 것을 목표로 한다. 주변의 터치스크린, 마우스 등은 UI를 물리적으로 볼 수 있는 좋은 예시이다.
- 일반적인 웹 또는 앱 서비스
- 브라우저
- Chrome, Safari, Firefox, Explorer, Whale, Edge
- 앱
- 안드로이드 앱
- IOS 앱
출처: IBM(https://www.ibm.com/cloud/learn/three-tier-architecture)
SOILD 원칙을 따르기 위해서이다. 기능별로 나누어서
프레젠테이션 티어는 보여주는 역할만을
Aplplication Tier에서는 구동의 역할만을
DB는 데이터 저장의 역할 수행하게 한다.
즉,
> Presentation Tier -(기능요구)> Application Tier -(데이터 요구)> DB Tier
> DB Tier -(데이터 제공)> Application Tier -(기능 제공)> Presentation Tier
public class User {
private String userID;
private String passWord;
private String userName;
private String accountNum;
private boolean isAdmin = false;
위와같이 Class를 만들고, 변수를 선언한다(필드를 생성한다)
2.DB(DB역할은 아니지만)
public class UserDB {
private ArrayList<User> userList = new ArrayList<>();
// 유저 등록( DB에 넣기)
public void insertUser(User user){
userList.add(user);
}
//모든 유저 조회(은행은 모든 계좌의 목록을 조회할 수 있다... 를 구현하기 위해서)
public ArrayList<User> getAllUser(){
return userList;
}
//유저 1명 조회 - 계좌번호로 찾기 (개인별 서비스용 - 수정/삭제/거래내역 조회 등)
public User getUserByAccountNum(String accountNum){
for(User user : userList){
if(user.getAccountNum().equals(accountNum)){
return user;
}
}
return null;
}
위와같이 유저 신규 등록 / 모든 유저 조회 등의 기능을 수행하는, 실질적으로는 Application에 해당하지만 DB로써도 기능하게...돼줬으면 해서 만든 클래스.
3.Logic(Application?)
public class UserLogic {
UserDB userDB = new UserDB();
public void signUp(String name, String id, String pw) {
if (userDB.getAllUser() == null) {
userDB.addAdmin();
}
for (User user : userDB.getAllUser()) {
if (user.getUserID().equals(id)) {
throw new IllegalArgumentException("아이디 중복");
}
}
User user = new User(name, id, pw);
userDB.insertUser(user);
}
public String login(String id, String pw) {
for (User user : userDB.getAllUser()) {
if (!user.getUserID().equals(id)) {
throw new IllegalArgumentException("아이디 없음");
}
}
for (User user : userDB.getAllUser()) {
if (!user.getPassWord().equals(pw)) {
throw new IllegalArgumentException("비밀번호 불일치");
}
}
return "로그인 성공";
위와같이 로그인, 회원가입등의'기능'을 실행하는 로직. 물론 어플리케이션이라고 보기엔 미흡하다.
public class UserUI {
Scanner scanner = new Scanner(System.in);
UserLogic userLogic = new UserLogic();
public void signUp() {
System.out.println("회원가입 진행");
System.out.println("이름 입력");
String name = scanner.nextLine();
System.out.println("아이디 입력");
String id = scanner.nextLine();
System.out.println("비밀번호 입력");
String pw = scanner.nextLine();
try {
userLogic.signUp(name, id, pw);
} catch () {
}
}
위와같이 Scanner를 이용해서 자바 내에서 띄워주는 식. Presentation 이라기엔 미흡하긴 하다...