Community

๐Ÿ•Š๏ธ Java Spring Boot์—์„œ If-Else๋ฌธ ์ค„์ด๊ธฐ

If-else ๋ฌธ์€ ํ”ํ•˜์ง€๋งŒ ๋‚จ์šฉ๋˜๋ฉด ๋ณต์žกํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์šด ์ฝ”๋“œ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” Java Spring Boot ํ”„๋กœ์ ํŠธ์—์„œ if-else ๋ฌธ์„ ์ค„์ด๊ธฐ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ์ „๋žต์„ ํƒ๊ตฌํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ๋” ๋ชจ๋“ˆํ™”ํ•˜๊ณ , ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ์‰ฝ๊ณ , ์ฝ๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ย  If-Else ๋ฌธ์„ ์ค„์ด๋Š” ์ „๋žต * ์ „๋žต ํŒจํ„ด(Strategy Pattern) * Enum ์‚ฌ์šฉ * ๋‹คํ˜•์„ฑ(Polymorphism) * ๋žŒ๋‹ค ํ‘œํ˜„์‹๊ณผ ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค * ๋ช…๋ น ํŒจํ„ด(Command Pattern) * ๊ฐ€๋“œ ์ ˆ(Guard Clauses) 1. ์ „๋žต ํŒจํ„ด ์ „๋žต ํŒจํ„ด์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฐ€์กฑ์„ ์ •์˜ํ•˜๊ณ , ๊ฐ๊ฐ์„ ์บก์Аํ™”ํ•˜๋ฉฐ, ์ด๋“ค์„ ์ƒํ˜ธ ๊ตํ™˜ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ย  ์˜ˆ์ œ: ๊ฒฐ์ œ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ ๋จผ์ € PaymentStrategy ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค: public interface PaymentStrategy { void pay(double amount); } ๊ทธ๋Ÿฐ ๋‹ค์Œ, ๋‹ค๋ฅธ ๊ฒฐ์ œ ์ „๋žต์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค: @Component public class CreditCardPayment implements PaymentStrategy { @Override public void pay(double amount) { // ์‹ ์šฉ ์นด๋“œ ๊ฒฐ์ œ ์ฒ˜๋ฆฌ ๋กœ์ง System.out.println("Paid " + amount + " using Credit Card."); } } @Component public class PaypalPayment implements PaymentStrategy { @Override public void pay(double amount) { // PayPal ๊ฒฐ์ œ ์ฒ˜๋ฆฌ ๋กœ์ง System.out.println("Paid " + amount + " using PayPal."); } } ย  2. Enum ์‚ฌ์šฉ Enums๋Š” ๋ฏธ๋ฆฌ ์ •์˜๋œ ์ƒ์ˆ˜ ์ง‘ํ•ฉ๊ณผ ๊ทธ์™€ ๊ด€๋ จ๋œ ๋™์ž‘์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ย  ์˜ˆ์ œ: ์ฃผ๋ฌธ ์ƒํƒœ ๊ด€๋ฆฌ ๋‹ค์–‘ํ•œ ๋™์ž‘์„ ๊ฐ€์ง„ OrderStatus enum์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค: public enum OrderStatus { NEW { @Override public void handle() { System.out.println("Processing new order."); } }, SHIPPED { @Override public void handle() { System.out.println("Order shipped."); } }, DELIVERED { @Override public void handle() { System.out.println("Order delivered."); } }; public abstract void handle(); } ย  3. ๋‹คํ˜•์„ฑ (Polymorphism) ๋‹คํ˜•์„ฑ์€ ๊ฐ์ฒด๋ฅผ ์‹ค์ œ ํด๋ž˜์Šค๊ฐ€ ์•„๋‹Œ ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋กœ ์ทจ๊ธ‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ฐธ์กฐ๋ฅผ ํ†ตํ•ด ํŒŒ์ƒ ํด๋ž˜์Šค์˜ ์žฌ์ •์˜๋œ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ย  ์˜ˆ์ œ: ์•Œ๋ฆผ ์‹œ์Šคํ…œ Notification ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ทธ ๊ตฌํ˜„์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค: public interface Notification { void send(String message); } public class EmailNotification implements Notification { @Override public void send(String message) { // ์ด๋ฉ”์ผ ์ „์†ก ๋กœ์ง System.out.println("Sending email: " + message); } } public class SmsNotification implements Notification { @Override public void send(String message) { // SMS ์ „์†ก ๋กœ์ง System.out.println("Sending SMS: " + message); } } ย  4. ๋žŒ๋‹ค ํ‘œํ˜„์‹๊ณผ ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค ๋žŒ๋‹ค ํ‘œํ˜„์‹์€ ํŠนํžˆ ๋‹จ์ผ ๋ฉ”์„œ๋“œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์ฝ”๋“œ๋ฅผ ๊ฐ„์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ย  ์˜ˆ์ œ: ํ• ์ธ ์„œ๋น„์Šค ๋žŒ๋‹ค ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜๋Š” ํ• ์ธ ์„œ๋น„์Šค๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค: import java.util.HashMap; import java.util.Map; import java.util.function.Function; public class DiscountService { private Map> discountStrategies = new HashMap(); public DiscountService() { discountStrategies.put("SUMMER_SALE", price -> price * 0.9); discountStrategies.put("WINTER_SALE", price -> price * 0.8); } public double applyDiscount(String discountCode, double price) { return discountStrategies.getOrDefault(discountCode, Function.identity()).apply(price); } } ย  5. ๋ช…๋ น ํŒจํ„ด (Command Pattern) ๋ช…๋ น ํŒจํ„ด์€ ์š”์ฒญ์„ ๊ฐ์ฒด๋กœ ์บก์Аํ™”ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ๋ฅผ ํ, ์š”์ฒญ, ์ž‘์—…์œผ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜ํ™”ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ย  ์˜ˆ์ œ: ํŒŒ์ผ ์ž‘์—… Command ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ตฌ์ฒด์ ์ธ ๋ช…๋ น์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค: public interface Command { void execute(); } public class OpenFileCommand implements Command { private FileSystemReceiver fileSystem; public OpenFileCommand(FileSystemReceiver fs) { this.fileSystem = fs; } @Override public void execute() { this.fileSystem.openFile(); } } public class CloseFileCommand implements Command { private FileSystemReceiver fileSystem; public CloseFileCommand(FileSystemReceiver fs) { this.fileSystem = fs; } @Override public void execute() { this.fileSystem.closeFile(); } } ย  6. ๊ฐ€๋“œ ์ ˆ (Guard Clauses) ๊ฐ€๋“œ ์ ˆ์€ ์กฐ๊ฑด์„ ๋ฏธ๋ฆฌ ์ฒ˜๋ฆฌํ•˜์—ฌ ์ค‘์ฒฉ ๊ตฌ์กฐ๋ฅผ ์ค„์ด๊ณ  ์ฝ”๋“œ๋ฅผ ๋” ์ฝ๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์˜ˆ์ œ: ์‚ฌ์šฉ์ž ๊ฒ€์ฆ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•ด if-else ๋ฌธ์„ ์ค‘์ฒฉํ•˜๋Š” ๋Œ€์‹ , ๊ฐ€๋“œ ์ ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž˜๋ชป๋œ ๊ฒฝ์šฐ๋ฅผ ๋ฏธ๋ฆฌ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค: public class UserService { public void registerUser(User user) { if (user == null) { throw new IllegalArgumentException("User cannot be null"); } if (user.getName() == null || user.getName().isEmpty()) { throw new IllegalArgumentException("User name cannot be empty"); } if (user.getEmail() == null || user.getEmail().isEmpty()) { throw new IllegalArgumentException("User email cannot be empty"); } // ๋“ฑ๋ก ์ง„ํ–‰ System.out.println("Registering user: " + user.getName()); } } ย  ๊ฒฐ๋ก  ์ด๋Ÿฌํ•œ ์ „๋žต์„ ์ ์šฉํ•จ์œผ๋กœ์จ Java Spring Boot ํ”„๋กœ์ ํŠธ์—์„œ if-else ๋ฌธ์˜ ์‚ฌ์šฉ์„ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ณ  ์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŒจํ„ด๊ณผ ๊ด€ํ–‰์„ ์ฑ„ํƒํ•˜์—ฌ ๋” ๊นจ๋—ํ•˜๊ณ  ํšจ์œจ์ ์ธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”. ๋ฒˆ์—ญ: [https://ducktopia.tistory.com/129] ์›๋ฌธ:

์•Œ๋ฆผ

์•Œ๋ฆผ์ด ์—†์Šต๋‹ˆ๋‹ค