Suhee Coding Archive
[λμμΈ ν¨ν΄] ν©ν 리 ν¨ν΄ λ³Έλ¬Έ
π ν©ν 리 ν¨ν΄
κ°μ²΄λ₯Ό μ¬μ©νλ μ½λμμ κ°μ²΄ μμ± λΆλΆμ λΌμ΄λ΄ μΆμνν ν¨ν΄μ΄μ μμ κ΄κ³μ μλ λ ν΄λμ€μμ μμ ν΄λμ€κ° μ€μν λΌλλ₯Ό κ²°μ νκ³ , νμ ν΄λμ€μμ κ°μ²΄ μμ±μ κ΄ν ꡬ체μ μΈ λ΄μ©μ κ²°μ νλ ν¨ν΄
- μμ ν΄λμ€μ νμ ν΄λμ€κ° λΆλ¦¬λκΈ° λλ¬Έν΄ λμ¨ν κ²°ν©
- μμ ν΄λμ€μμλ μΈμ€ν΄μ€ μμ± λ°©μμ λν΄ μ ν μ νμκ° μκΈ° λλ¬Έμ λ λ§μ μ μ°μ±μ κ°κ² λλ€.
- κ°μ²΄ μμ± λ‘μ§μ΄ λ°λ‘ λΌμ΄μ Έ μκΈ° λλ¬Έμ μ½λλ₯Ό 리ν©ν°λ§νλλΌλ ν κ³³λ§ κ³ μΉ μ μκ² λλ μ μ§ λ³΄μμ±μ΄ μ¦κ°
μμ ) λΌλΌ λ μνΌ / μλ©λ¦¬μΉ΄λ Έ λ μνΌ / μ°μ λ μνΌλΌλ ꡬ체μ μΈ λ΄μ©μ΄ λ€μ΄ μλ νμ ν΄λμ€κ° μ»¨λ² μ΄μ΄ 벨νΈλ₯Ό
ν΅ν΄ μ λ¬ μμ ν΄λμ€μΈ λ°λ¦¬μ€ν 곡μ₯μμ μ΄ λ μνΌλ€μ ν λλ‘ μ°μ λ±μ μμ°νλ μμ° κ³΅μ μ μκ°νλ©΄ λλ€.
abstract class Coffee {
public abstract int getPrice();
@Override
public String toString(){
return "Hi this coffee is "+ this.getPrice();
}
}
class CoffeeFactory {
public static Coffee getCoffee(String type, int price){
if("Latte".equalsIgnoreCase(type)) return new Latte(price);
else if("Americano".equalsIgnoreCase(type)) return new Americano(price);
else{
return new DefaultCoffee();
}
}
}
class DefaultCoffee extends Coffee {
private int price;
public DefaultCoffee() {
this.price = -1;
}
@Override
public int getPrice() {
return this.price;
}
}
class Latte extends Coffee {
private int price;
public Latte(int price){
this.price=price;
}
@Override
public int getPrice() {
return this.price;
}
}
class Americano extends Coffee {
private int price;
public Americano(int price){
this.price=price;
}
@Override
public int getPrice() {
return this.price;
}
}
public class HelloWorld{
public static void main(String []args){
Coffee latte = CoffeeFactory.getCoffee("Latte", 4000);
Coffee ame = CoffeeFactory.getCoffee("Americano",3000);
System.out.println("Factory latte ::"+latte);
System.out.println("Factory ame ::"+ame);
}
}
/*
Factory latte ::Hi this coffee is 4000
Factory ame ::Hi this coffee is 3000
*/
CoffeeFactory λΌλ μμ ν΄λμ€κ° μ€μν λΌλλ₯Ό κ²°μ νκ³ νμ ν΄λμ€μΈ LatteFactoryκ° κ΅¬μ²΄μ μΈ λ΄μ©μ κ²°μ νκ³ μλ€. μ΄λ μμ‘΄μ± μ£Όμ μ΄λΌκ³ λ³Ό μ μλ€. CoffeeFactoryμμ LatteFactoryμ μΈμ€ν΄μ€λ₯Ό μμ±νλ κ²μ΄ μλ LatteFactoryμμ μμ±ν μΈμ€ν΄μ€λ₯Ό CoffeeFactoryμ μ£Όμ νκ³ μκΈ° λλ¬Έ. λν CoffeeFactoryλ₯Ό 보면 staticμΌλ‘ getCoffee() μ μ λ©μλλ₯Ό μ μν κ²μ μ μ μλλ°, μ μ λ©μλλ₯Ό μ°λ©΄ ν΄λμ€μ μΈμ€ν΄μ€ μμ΄ νΈμΆμ΄ κ°λ₯νμ¬ λ©λͺ¨λ¦¬λ₯Ό μ μ½ ν μ μκ³ κ°λ³ μΈμ€ν΄μ€μ λ¬Άμ΄μ§ μμΌλ©° ν΄λμ€ λ΄μ ν¨μλ₯Ό μ μν μ μλ μ₯μ μ΄ μλ€.
β if("Latte".equalsIgnoreCase(type))μ ν΅ν΄ λ¬Έμμ΄ λΉκ΅ κΈ°λ°μΌλ‘ λ‘μ§μ΄ ꡬμ±λλλ° Enum λλ Mapμ μ΄μ©νμ¬ ifλ¬Έμ μ°μ§ μκ³ λ§€νν΄μ ν μλ μλ€.
β Enum
μμμ μ§ν©μ μ μν λ μ¬μ©λλ νμ μ΄λ€. μμλ λ©μλ λ±μ μ§μ΄λ£μ΄μ κ΄λ¦¬νλ©° μ½λλ₯Ό 리ν©ν°λ§ ν λ ν΄λΉ μ§ν©μ κ΄ν λ‘μ§ μμ μ μ΄λΆλΆλ§ μμ νλ©΄ λλ―λ‘ μ½λ 리ν©ν°λ§ μ κ°μ μ΄ μκΈ΄λ€.
'CS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| [λμμΈ ν¨ν΄] μ΅μ λ² ν¨ν΄ (0) | 2022.10.12 |
|---|---|
| [λμμΈ ν¨ν΄] μ λ΅ ν¨ν΄ (0) | 2022.10.12 |
| [λμμΈ ν¨ν΄] μ±κΈν€ ν¨ν΄ (0) | 2022.10.12 |
| [μλ£κ΅¬μ‘°] μ ν μλ£ κ΅¬μ‘° - μ°κ²° 리μ€νΈ / λ°°μ΄ / λ²‘ν° / μ€ν / ν (1) | 2022.10.05 |
| [μλ£κ΅¬μ‘°] 볡μ‘λ - μκ° λ³΅μ‘λ / κ³΅κ° λ³΅μ‘λ (1) | 2022.10.05 |