๐Ÿ’กย ํด๋ฆฐ์ฝ”๋“œ ์ž‘์„ฑ ์›์น™

DI(Dependency Injection)

class Feed() { ... }

class Meet extends Feed { ... }
class Bone extends Feed { ... }

class Puppy {
    private Feed feed;

    public Puppy() {
    	this.feed = new Meet();
      // Meet -> Bone ๋ณ€๊ฒฝ ์‹œ ์ผ์ผ์ด ๋ณ€๊ฒฝํ•ด์ค˜์•ผํ•จ
    }
   
		...
}

์˜์กด์„ฑ ์ฃผ์ž…์˜ ์„ธ๊ฐ€์ง€ ์กฐ๊ฑด

์ด์ผ๋ฏผ, ํ† ๋น„์˜ ์Šคํ”„๋ง 3.1, ์—์ด์ฝ˜(2012), p114

์Šคํ”„๋ง์—์„œ์˜ ์˜์กด์„ฑ ์ฃผ์ž… ๋ฐฉ๋ฒ•

โญย 1. ์ƒ์„ฑ์ž ์ฃผ์ž…

class Puppy {
    private Feed feed;

    public Puppy(Feed feed) {
        this.feed = feed;
    }
}

class PuppyOwner {
    private Puppy puppy = new Puppy(new Meet()); // ๋””ํดํŠธ, Meet

    public void changeFeed() {
        feed = new Puppy(new Bone()); // ์ดํ›„ ๋ณ€๊ฒฝ, Bone
    }
}