일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 수학
- 자바 스레드 실행 순서 제어
- 자바입력
- input
- SpringBoot 2
- scanner
- hash table
- Kadane's Algorithm
- 자바 thread 실행 순서 제어
- array
- R
- 사칙연산
- heroku
- 카데인 알고리즘
- JAVA11
- Easy
- Today
- Total
목록Design Pattern (42)
DeFacto-Standard IT
Strategy Pattern 1 : Many 관계와 같다. 객체의 타입을 하나로 다루면서 이해 다양한 연산을 적용해야할 때, Strategy Pattern을 활용하면 적절하다. 예를 들면, Video 클래스가 있다고 가정하자. 이 클래스는 동영상 파일을 의미한다. 동영상에는 Mpeg, Avi 등 여러 포맷이 존재하고, 표현하는 방법이 모두 다르다. 따라서 MpegVideo, AviVideo 등 파생 클래스가 존재한다. 전부 다르지만 Video Interface(혹은 class)를 상속받아 캡슐화하고, 추상화하여 하나의 Video로 다룰 때 유용하다. Visitor PatternMany : Many 관계와 같다. 위에서 Video 뿐만아니라 Audio까지 다루게 된다고 가정해보자. Audio 역시 다양한..
1. 가정 - 게임에서 유닛과 색상을 모델링한다. - 유닛은 색상 정보를 가지고 있다. 2. Naive Code - Colorpublic class Color { private String name; public Color(String name) { this.name = name; } public String getName() { return this.name; } }색상정보를 저장하는 클래스이다. - Unitpublic class Unit { private Color color; private String name; public Unit(String name, Color color) { this.name = name; this.color = color; } public String getName() {..
1. 가정 - 로거를 구현한다. - 문자열을 넘기면 해당 문자열을 출력하는 로거를 작성한다. 2. Naive Code - Log4Jpublic class Log4J { public void logging(String string) { System.out.println("Log4J : " + string); } }Log4J라는 이름의 Logger클래스이다. 문자열을 받아서 콘솔에 출력하는 역할을 한다. - NaiveClientpublic class NaiveClient { public static void main(String args[]) { Log4J logger = new Log4J(); logger.logging("Log this String"); } }로거를 활용해서 문자를 로깅한다. 실행 결과는..
1. 가정 - 아톰을 만든다. - 아톰은 펀치공격이 가능하다. 2. Naive Code - Punchpublic class Punch { private final String attackType = "Punch"; public String getName() { return attackType; } }펀치 공격에 해당하는 클래스. - Atompublic class Atom { private final String robotType = "Atom"; private Punch punch; public void setPunch(Punch punch) { this.punch = punch; } public void attack() { System.out.println(robotType + " : " + punch..
1. 가정 - TV와 TV 콘센트를 만든다. - TV에는 해외 직구용 TV와, 국내용 TV가 존재한다. - 해외직구TV는 110V를 사용하며, 국내용 TV는 220V를 사용한다. 2. Naive Code - DomesticTV / OverseasTVpublic class DomesticTV { private final int acceptableVoltage = 220; public void on(int electricCurrent) { if ( this.isAcceptableVoltage(electricCurrent) ) System.out.println("Domestic TV is Turned On"); else System.out.println("Warning : Not Acceptable Volta..
1. 가정 - 사람에 대한 정보를 저장하고, 출력하는 프로그램을 작성한다. - 사람에 대한 정보는 이름, 나이, 전화번호, 키, 몸무게 등이 있다. - 모든 정보를 입력할 필요 없이, 부분적으로 입력할 수 있다. - 모든 정보는 수정될 수 있다. 2. Naive Code - Personpublic class Person { private String name; private int age; private String phoneNumber; private int height; private int weight; public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } public ..
1. 가정 - 비디오를 보여주는 프로그램을 만든다. - Mpeg, Avi 포맷을 지원한다. 2. Naive Code - VideoStrategypublic interface VideoStrategy { public void doVideo(); } - MpegVideoStrategypublic class MpegVideoStrategy implements VideoStrategy { @Override public void doVideo() { System.out.println(this.getClass().getSimpleName() + "# doVideo()"); } } - AviVideoStrategypublic class AviVideoStrategy implements VideoStrategy { @..
1. 가정 - 채팅을 구현한다. - 채팅은 최대 4명이 가능하다. 2. Naive Code - Userpublic class User { private String name; private String message; List userList; public User(String name) { this.name = name; userList = new ArrayList(); } public void setMessage(String message) { this.message = message; } public void addUser(User user) { userList.add(user); } public void chat() { for(User user : userList) user.receiveMessa..
1. 가정 - 여러 종류의 작업을 처리하는 프로그램을 작성한다. - 처리가능한 작업의 종류는 A~D까지 있다. (종류일 뿐, A~D등급은 아니다.) - 작업의 처리는 해당 작업의 종류를 출력하는 것으로 구현한다. - 위 4가지 종류의 작업이 아니라 다른 종류의 작업이 있으면, 해당 작업에 대해 처리를 할 수 없다는 표시를 한다. 2. Naive Code - Jobpublic class Job { private char type; public Job(char type) { this.type = type; } public char getType(){ return this.type; } } 작업을 의미하는 Job 클래스이다. - JobExecutorpublic class JobExecutor { private..
1. 가정 - 사용자의 요청에 따라 처리를 하는 서버 시스템을 구현한다. - 서버는 사용자 인증을 수행한다. 여기서는 User1이라는 ID와 1234라는 Password를 가지면 인증에 성공한다고 가정한다. - 서버는 인증에 성공한 유저의 이름만 출력한다. 2. Naive Code - Userpublic class User { private String ID; private String PW; public User(String ID, String PW) { this.ID = ID; this.PW = PW; } public String getID() { return ID; } public String getPW() { return PW; } } - Securitypublic class Security { ..