반응형
템플릿 메서드 패턴
: 추상 클래스와 추상 메서드를 이용해 코드 중복을 줄이고 재사용성을 높일 수 있다.
Teacher 클래스
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | package ch01; abstract class Teacher { public void start_class() { inside(); attendance(); outside(); teach(); } private void inside() { System.out.println("선생님이 강의실로 들어온다."); } private void attendance() { System.out.println("선생님이 출석을 부른다."); } private void outside() { System.out.println("선생님이 강의실을 나간다."); } abstract void teach(); } class Korean_Teacher extends Teacher{ @Override void teach() { System.out.println("국어를 수업합니다."); } } class Math_Teacher extends Teacher{ public void teach() { System.out.println("수학을 수업합니다."); } } class English_Teacher extends Teacher{ public void teach() { System.out.println("영어를 수업합니다."); } } | cs |
MainTest
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 32 33 | package ch01; public class MainTest { public static void main(String[] args) { Korean_Teacher kr = new Korean_Teacher(); Math_Teacher mt = new Math_Teacher(); English_Teacher en = new English_Teacher(); kr.start_class(); System.out.println("--------------"); mt.start_class(); System.out.println("--------------"); en.start_class(); } } 결과 선생님이 강의실로 들어온다. 선생님이 출석을 부른다. 선생님이 강의실을 나간다. 국어를 수업합니다. -------------- 선생님이 강의실로 들어온다. 선생님이 출석을 부른다. 선생님이 강의실을 나간다. 수학을 수업합니다. -------------- 선생님이 강의실로 들어온다. 선생님이 출석을 부른다. 선생님이 강의실을 나간다. 영어를 수업합니다. | cs |
싱글톤 패턴
: 객체를 생성할 때마다 메모리 영역을 할당받아야 하는데 new를 통해 객체를 한 번만 생성해서 메모리 낭비를 방지한다.
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 | package ch01; // DBHelper 쓸 때 썼던 방식으로 하면 됨 public class Singleton { private static Singleton singleton = new Singleton(); private Singleton() { } public static Singleton getInstance() { return singleton; } public void say() { System.out.println("hi"); } public static void main(String[] args) { Singleton.getInstance().say(); } } 결과 hi | cs |
빌더 패턴
: 생성자 오버로딩을 할 때 새롭게 추가되는 변수 때문에 모든 코드를 수정하지 않아도 된다.
또한, 매개변수가 많아도 호출하여 값을 넣을 수 있으니 코드의 가독성이 높아진다.
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | package ch01; public class Todo { // 빌더 패턴 private String content; private int complete; // 1 완료, 0 미완료 // 1. 기본 생성자 재정의 private Todo() { } public static class MyBuilder { private String content; private int complete; // this! public MyBuilder setContent(String content) { this.content = content; return this; } public MyBuilder setComplete(int complete) { this.complete = complete; return this; } // 핵심 !! // 매개변수를 편하고 명확하게 쓸 수 있음. public Todo build() { Todo todo = new Todo(); // Todo 변수 content = Build 변수 content; todo.content = content; todo.complete = complete; return todo; } } // main 함수 public static void main(String[] args) { Todo todo1 = new MyBuilder().setComplete(1).build(); // Todo todo2 = new MyBuilder().setContent("잠자기"); // 오류 Todo todo3 = new MyBuilder().setComplete(0).setContent("청소하기").build(); } // end of main } | cs |
반응형
'프로그래밍 > Java' 카테고리의 다른 글
Java_스트림(Stream) (0) | 2023.04.09 |
---|---|
Java_어댑터 패턴 (0) | 2023.03.27 |
Java_람다식(Lambda Expression) (1) | 2023.03.22 |
Java_소켓(Socket) 통신 (0) | 2023.03.04 |
Java_Input/Output 스트림(Stream) (0) | 2023.03.02 |