POOPOO: 배변 일기 앱
SMALL
행동패턴 목록
- 책임연쇄 패턴 (Chan of Responsibility Pattern)
- 커맨드 패턴 (Command Pattern)
- 해석자 패턴 (Interpreter Pattern)
- 반복자 패턴 (Iterator Pattern)
- 중재자 패턴 (Mediator Pattern)
- 메멘토 패턴 (Memento Pattern)
- 관찰자 패턴 (Observer Pattern)
- 상태 패턴 (State Pattern)
- 전략 패턴 (Strategy Pattern)
- 템플릿 패턴 (Template Pattern)
메시지 기반으로 무언가를 구현하려고 할 때 사용하면 유용할 것 같다. 특히 채팅관련 기능은 대부분의 서비스에 들어가기 때문에 꼭 사용되어야 할 것 같다.
장점
- 클래스 수를 분리합니다.
- 객체 프로토콜을 단순화 합니다.
- 제어를 중앙집중화 합니다.
- 개별 구성요소는 서로에게 메시지를 전달할 필요가 없어집니다.
사용시기
- 채팅 응용프로그램과 같은 메시지 기반 시스템에서 일반적으로 사용됩니다.
- 일련의 개체가 복잡하지만 잘 정의된 방식으로 통신하는 경우 사용됩니ㅏㄷ.
UML
ChatRoom Class : ApnaChatRoom, ApnaChatRoomImpl
public interface ApnaChatRoom {
public void showMsg(String msg, Participant p);
}
public class ApnaChatRoomImpl implements ApnaChatRoom{
DateFormat dateFormat = new SimpleDateFormat("E dd-MM-yyyy hh:mm a");
Date date = new Date();
@Override
public void showMsg(String msg, Participant p) {
System.out.println(p.getName()+"'gets message: "+msg);
System.out.println("\t\t\t\t"+"["+dateFormat.format(date).toString()+"]");
}
}
ChatUser Class : Participant, User
public abstract class Participant {
public abstract void sendMsg(String msg);
public abstract void setname(String name);
public abstract String getName();
}
public class User extends Participant {
private String name;
private ApnaChatRoom chat;
public User(ApnaChatRoom chat){
this.chat = chat;
}
@Override
public void sendMsg(String msg) {
chat.showMsg(msg, this);
}
@Override
public void setname(String name) {
this.name = name;
}
@Override
public String getName() {
return name;
}
}
Operation Class : MediatorPatternDemo
public class MediatorPatternDemo {
public static void main(String args[]) {
ApnaChatRoom chat = new ApnaChatRoomImpl();
User u1 = new User(chat);
u1.setname("Ashwani Rajput");
u1.sendMsg("Hi Ashwani! how are you?");
User u2 = new User(chat);
u2.setname("Soono Jaiswal");
u2.sendMsg("I am Fine ! You tell?");
}
}
출처 : https://www.javatpoint.com/
LIST