๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“œ ์ž๋ฐ” Java

Factory(ํŒฉํ† ๋ฆฌ) ๋ฉ”์†Œ๋“œ ํŒจํ„ด

by Meteora_ 2021. 2. 4.
728x90

I. ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ํŒจํ„ด

ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ํŒจํ„ด์€

 

๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋ณ„๋„ ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ๋กœ ๋ถ„๋ฆฌํ•˜๋ฉด์„œ ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐฉ์‹์˜ ๋ณ€ํ™”์— ๋Œ€๋น„ํ•˜๋Š” ํŒจํ„ด์ด๋‹ค.

 

 

1. ์ž์‹ ์ด ์ƒ์„ฑํ•ด์•ผํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ์–ด๋–ค ํด๋ž˜์Šค์ธ์ง€ ์•Œ์ˆ˜ ์—†์„๋•Œ,

 

2. ์ƒ์„ฑํ•  ๊ฐ์ฒด๋ฅผ ๊ธฐ์ˆ ํ•˜๋Š”๊ฒƒ์„ ์„œ๋ธŒํด๋ž˜์Šค๋กœ ์ด๊ด€์‹œํ‚ค๊ณ  ์‹ถ์„๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

ํ•œ์ค„๋กœ ์š”์•ฝํ•ด ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ๊ฒฐ์ •์„ ์„œ๋ธŒํด๋ž˜์Šค๊ฐ€ ๋‚ด๋ฆฌ๊ฒŒํ•œ๋‹ค.

 

 

 

 

์˜ˆ์ œ

 

1.<Main Class>

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package main;
 
import java.util.ArrayList;
import java.util.List;
 
import animal.Animal;
import animal.Cat;
import animal.Dog;
import animal.Cow;
import factory.AnimalFactory;
 
public class MainClass {
 
    public static void main(String[] args) {
        
        Animal a1 = AnimalFactory.create("๋ฉ๋ฉ์ด");
 
        Animal a2 = AnimalFactory.create("์•ผ์˜น์ด");
        
        Animal a3 = AnimalFactory.create("ํ™ฉ์†Œ");
                
                
        a1.printDescript();
        a2.printDescript();
        a3.printDescript();
        
        ((Dog)a1).dogMethod();
        Cat c = (Cat)a2;
        c.catMethod();
        
        ((Cow)a3).cowMethod();
        
        
        String aniName[] = { "์•ผ์˜น์ด""๋ฉ๋ฉ์ด""๋ฉ๋ฉ์ด","์•ผ์˜น์ด","ํ™ฉ์†Œ" };
    
        List<Animal> list = new ArrayList<Animal>();
        
        for (int i = 0; i < aniName.length; i++) {
            Animal a = AnimalFactory.create(aniName[i]);
            list.add(a);
        }
        
        /* ์ด๋ ‡๊ฒŒ๋„ ์‚ฌ์šฉ๊ฐ€๋Šฅ
        Animal a = AnimalFactory.create("๋ฉ๋ฉ์ด");
        list.add(a);
        
        a = AnimalFactory.create("์•ผ์˜น์ด");
        list.add(a);
        
        a = AnimalFactory.create("ํ™ฉ์†Œ");
        list.add(a);*/
        
        for (int i = 0; i < list.size(); i++) {
            Animal ani = list.get(i);
            ani.printDescript();
            
            if(ani instanceof Dog) {
                ((Dog)ani).dogMethod();
            }
            else if(ani instanceof Cow) {
                ((Cow)ani).cowMethod();
            }
            else if(ani instanceof Cat) {
                ((Cat)ani).catMethod();
                
            }
        }
        
    }
 
}
 
cs

2. <Animal> 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package animal;
 
public class Cat implements Animal {
 
    @Override
    public void printDescript() {
        System.out.println("์•ผ์˜น์ด์ž…๋‹ˆ๋‹ค");
    }
    
    public void catMethod() {
        System.out.println("์•ผ์˜น ์•ผ์˜น");
    }
    
 
}
 
cs

3. <AnimalFactory>

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
package factory;
 
import animal.Animal;
import animal.Cat;
import animal.Cow;
import animal.Dog;
 
public class AnimalFactory {
 
    public static Animal create(String animalName) {
        
        if(animalName.equals("")) {
            System.out.println("์ƒ์„ฑํ•  ํด๋ž˜์Šค๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.");
        }
        if(animalName.equals("์•ผ์˜น์ด")) {
            return new Cat();
        }
        else if(animalName.equals("๋ฉ๋ฉ์ด")) {
            return new Dog();
        }
        else if(animalName.equals("ํ™ฉ์†Œ")) {
            return new Cow();
        }
        return null;
    }
    
}
 
 
cs

4.<Dog>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package animal;
 
public class Dog implements Animal {
 
    @Override
    public void printDescript() {
        System.out.println("๋ฉ๋ฉ์ด์ž…๋‹ˆ๋‹ค");
    }
    
    public void dogMethod() {
        System.out.println("๋ฉ๋ฉ");
    }
    
    
    
 
}
 
cs

5. <Cow>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package animal;
 
public class Cow implements Animal {
 
    @Override
    public void printDescript() {
        System.out.println("ํ™ฉ์†Œ์ž…๋‹ˆ๋‹ค");
    }
    
    public void cowMethod() { 
        System.out.println("์Œ๋ฉ”~");
    }
    
    
    
 
}
 
cs

6.<Cat>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package animal;
 
public class Cat implements Animal {
 
    @Override
    public void printDescript() {
        System.out.println("์•ผ์˜น์ด์ž…๋‹ˆ๋‹ค");
    }
    
    public void catMethod() {
        System.out.println("์•ผ์˜น ์•ผ์˜น");
    }
    
 
}
 
cs

๋Œ“๊ธ€