-
[Java] λμμΈ ν¨ν΄(Proxy ν¨ν΄)Android/Java 2021. 5. 14. 01:28λ°μν
Proxy ν¨ν΄μ΄λ?
ν΄λμ€λ₯Ό μμ± μμ κ°λ²Όμ΄ μμ μ λν λ©μλλ μ€ννλ, λ¬΄κ±°μ΄ μμ μΌ κ²½μ° λ€λ₯Έ ν΄λμ€μ λ©μλλ₯Ό μ€ννλ ν¨ν΄μ λλ€,
μ¦, λ리μΈ(Proxy) μν ν μ μλ ν΄λμ€κ° κ°λ²Όμ΄ μμ μ μ€ννλ€κ° μλ²μμ λ°μ΄ν°λ₯Ό λ°λλ€λκ°, λμμ μ¬μ μμλ μ£Όμ ν΄λμ€κ° μ€ννλλ‘ ν©λλ€.
Proxy ν¨ν΄μ μ¬μ©ν¨μΌλ‘μ¨ λ¬΄κ±°μ΄ μμ μ ν΄μΌν κ²½μ°μλ§ ν΄λμ€λ₯Ό μμ±νμ¬ λ©λͺ¨λ¦¬λ₯Ό ν¨μ¨μ μΌλ‘ μ¬μ©ν μ μμ΅λλ€.
Proxy ν¨ν΄ μ¬μ©
public interface Scorer { void multipleChoice(); void shortAnswer(); }
Scorer μΈν°νμ΄μ€λ κ°κ΄μκ³Ό μ£Όκ΄μμ μ±μ ν μ μλ μ±μ κ΄μ λ»νλ μΈν°νμ΄μ€μ λλ€. κ°κ΄μμ μλμ μΌλ‘ μ λ΅μ΄ μμΌλ©΄ μ½κ² μ±μ ν μ μμ§λ§, μ£Όκ΄ μμ μ£Όκ΄μ΄ λ€μ΄κ°κΈ° λλ¬Έμ μ€μνκ² νκ° κΈ°μ€μ μΈμ μ±μ ν΄μΌ ν©λλ€.
public class Professor implements Scorer{ @Override public void multipleChoice() { System.out.println("Professor score multiple choice"); } @Override public void shortAnswer() { System.out.println("Professor score short answer"); } } public class Assistant implements Scorer{ Professor professor; @Override public void multipleChoice() { System.out.println("assistant score multiple choice"); } @Override public void shortAnswer() { if(professor == null){ professor = new Professor(); } professor.shortAnswer(); } }
Scorer μΈν°νμ΄μ€λ₯Ό ꡬννλ ν΄λμ€ 2κ°λ₯Ό μμ±νμ¬ νλλ μ‘°κ΅, κ΅μμ ν΄λΉνλ ν΄λμ€μ λλ€.
Assistant ν΄λμ€μμ κ°κ΄μμ κ²½μ° μ‘°κ΅κ° μ±μ μ κ΅μ λλ¦¬μΈ μ격μΌλ‘ μννμ§λ§,μ£Όκ΄μ κ°μ κ²½μ°λ Professor ν΄λμ€λ₯Ό μμ±νμ¬ Professor ν΄λμ€μ λ©μλλ‘ μ€ννλλ‘ λ§λλλ€.public class Main{ public static void main(String[] args) { ArrayList<Scorer> scorers = new ArrayList<>(); scorers.add(new Assistant()); scorers.add(new Assistant()); scorers.add(new Assistant()); scorers.forEach(scorer -> { scorer.multipleChoice(); scorer.shortAnswer(); System.out.println(); }); /** * assistant score multiple choice * Professor score short answer * * assistant score multiple choice * Professor score short answer * * assistant score multiple choice * Professor score short answer */ } }
λ€μμ μ€ν κ²°κ³Όλ‘ μλμ μΌλ‘ κ°λ¨ν μμ μΈ κ°κ΄μ μ±μ μ μ‘°κ΅ ν΄λμ€κ° λ리μΈμΌλ‘ μννκ² λκ³ , μ€μν μ£Όκ΄μ κ°μ κ²½μ°λ κ΅μκ° μ±μ νλλ‘ ν΄λμ€λ₯Ό ꡬννμμ΅λλ€. μ΄μ²λΌ Proxy ν¨ν΄μ μ¬μ©ν¨μΌλ‘μ¨ μ£Όκ΄μ μ±μ ν κ²½μ°κ° μλ€λ©΄ μλμ μΌλ‘ Professor ν΄λμ€λ₯Ό μμ±ν νμκ° μκΈ° λλ¬Έμ λ©λͺ¨λ¦¬λ₯Ό ν¨μ¨μ μΌλ‘ μ¬μ©ν μ μμ΅λλ€.
λ°μν'Android > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] λμμΈ ν¨ν΄(Mediator ν¨ν΄) (0) 2021.05.18 [Java] λμμΈ ν¨ν΄(Template ν¨ν΄) (0) 2021.05.17 [Java] λμμΈ ν¨ν΄(Strategy ν¨ν΄) (0) 2021.05.11 [Java] λλ€μμ΄λ? (0) 2021.03.21 [Java] Java Generic(μ λ€λ¦) (0) 2021.03.01