Springboot/lecture

[Springboot] ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•

Alchemists 2022. 10. 5. 16:11
728x90

 

๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ• ๋•Œ ์ƒ์„ฑ์ž,์ •์ ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ,Builder๋ฅผ์‚ฌ์šฉํ•œ๋‹ค.

 

๋ณดํ†ต ๊ฐ์ฒด ์ƒ์„ฑ์ด ๋‹จ์ˆœํ•  ๋•Œ๋Š” ๋‹จ์ˆœํžˆ ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๊ฐ์ฒด ์ƒ์„ฑ์ด ๋ณต์žกํ•˜๋ฉฐ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๋ฉด 

์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ๋‚˜ Builder ํŒจํ„ด์„ ์‚ฌ์šฉํ•ด ์ƒ์„ฑ์ž๋ฅผ private์ฒ˜๋ฆฌํ•œ๋‹ค. 

 

๊ทธ๋Ÿผ ์ƒ์„ฑ์ž๋Š” ๋‹ค๋“ค ์ž˜ ์•„๋‹ˆ๊นŒ ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ์™€ Builder์— ์ง‘์ค‘ํ•ด์„œ ์„ค๋ช…ํ•ด๋ณด๋ คํ•œ๋‹ค.

 

์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ

 

์ƒ์„ฑ์ž์™€ ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌ๋ณ„ํ•ด์„œ ์„ค๋ช…ํ•˜์ž๋ฉด

 

public class Product{

	private String name;
    
    
    public Product(String name){
    
    	this.name=name;
    
    }
    
    
    public static Product nameOf(String name){
    
    	return new Product(name);
    }

 

 

๐Ÿ˜€ ์žฅ์ 

 

1. ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„๋‹ค.

Fruit fruit = new Fruit(apple);	// ์ƒ์„ฑ์ž 

Fruit fruit = Fruit.createApple(); // ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ

 

2. ํ˜ธ์ถœํ• ๋•Œ ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. 

public static Boolean valueOf(boolean b) {
	return b ? Boolean.TRUE : Boolean.FALSE;
}

 

์›์‹œ๊ฐ’ b์— ๋”ฐ๋ผ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘” TRUE,FALSE ์ค‘ ํ•˜๋‚˜์˜ ๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค. 

์ด๋ ‡๊ฒŒ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘” ์ธ์Šคํ„ด์Šค ๋ฐ˜ํ™˜ํ•˜๋ฉด์„œ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ์ค„์ธ๋‹ค. 

 

์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ๋Š” ๋ณ€์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚  ๊ฐ€๋Šฅ์„ฑ์ด ๊ฑฐ์˜ ์—†์œผ๋ฉฐ ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ 2๊ฐœ์ดํ•˜์ธ ๊ฒฝ์šฐ ์‚ฌ์šฉ์„ ์ถ”์ฒœํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. 

 

 

๐Ÿ˜ช ๋‹จ์ 

 

1. ์ƒ์„ฑ์ž ์—†์ด ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ๋งŒ ์ œ๊ณตํ•œ๋‹ค๋ฉด ์ƒ์†์ด ๋ถˆ๊ฐ€๋Šฅ

 

์ƒ์†ํ•˜๋ ค๋ฉด  public,protected ์ƒ์„ฑ์ž๊ฐ€ ํ•„์š”ํ•œ๋ฐ ์ด๋Ÿฐ ์• ๋“ค ์—†์ด ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ๋งŒ ์ œ๊ณตํ•œ๋‹ค๋ฉด ์ƒ์† ๋ถˆ๊ฐ€๋Šฅ!!

 

https://coder-in-war.tistory.com/entry/Java-28-%EC%A0%95%EC%A0%81-%ED%8C%A9%ED%86%A0%EB%A6%AC-%EB%A9%94%EC%84%9C%EB%93%9C

 

[ Java ] 28. ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ?!

์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ์šฐ๋ฆฌ๊ฐ€ ์–ด๋–ค ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•  ๋•Œ๋Š” ๋ณดํ†ต ์ƒ์„ฑ์ž๋ฅผ ์ด์šฉํ•œ๋‹ค. ๋ณดํ†ต ์‹ค์ œ ๊ฐœ๋ฐœ์— ๊ฐ€๋ฉด public ์ƒ์„ฑ์ž(ํ˜น์€ ๋นŒ๋”ํŒจํ„ด)๋ฅผ ์ฃผ๋กœ ์ด์šฉํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ด๋ณด๋‹ค ์ข€ ๋” ๋‚˜์€ ๋ฐฉ

coder-in-war.tistory.com

 

Builder

 

๋งŒ์•ฝ ์ •์  ํŒฉํ† ๋ฆฌ๋ฉ”์„œ๋“œ์™€ ์ƒ์„ฑ์ž์— ์„ ํƒ์  ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋งŽ์•„์ง„๋‹ค๋ฉด(๋ฐ˜๋“œ์‹œ ์ดˆ๊ธฐํ™”ํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜)

Builder๋ฅผ ์“ฐ๋Š”๊ฒƒ๋„ ๋ฐฉ๋ฒ•์ด๋‹ค.

๋นŒ๋” ํŒจํ„ด์˜ ๊ฐ€์žฅ ํฐ ์žฅ์ ์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์œ ์—ฐํ•˜๊ฒŒ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค๋Š” ์ ์ด๋‹ค!

 

public class User { 
    private String name;
    private int age;
    private int height;
    private int iq;
    
    //์ƒ์„ฑ์ž 

    public User (String name, int height, int iq) {
        this.name = name;
        this.height = height;
        this.iq = iq;
    }
    
    //์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ 
    
    public static User of(String name, int height, int iq) {
        return new User(name, 0, 180, 150);
    }
    
}
์ถœ์ฒ˜: https://mangkyu.tistory.com/163 [MangKyu's Diary:ํ‹ฐ์Šคํ† ๋ฆฌ]

 

์ด๋ ‡๊ฒŒ Userํด๋ž˜์Šค๊ฐ€ ์žˆ์„๋•Œ ๋นŒ๋”๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด 

 

User user = User.builder()
             .name("๋ง๋‚˜๋‹ˆ ๊ฐœ๋ฐœ์ž")
             .height(180)
             .iq(150).build();
์ถœ์ฒ˜: https://mangkyu.tistory.com/163 [MangKyu's Diary:ํ‹ฐ์Šคํ† ๋ฆฌ]

 

์ด๋ ‡๊ฒŒ ๊ฐ€๋Šฅํ•˜๋‹ค! ๋ฐ˜๋ณต์ ์ธ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•  ๋•Œ ๋นŒ๋”๋ฅผ ํ†ตํ•ด ๋™์ ์œผ๋กœ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•˜๋‹ค. 

๊ทธ๋ฆฌ๊ณ  ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋งŽ์•„์งˆ ๋•Œ 180,150์ด ๋ญ˜ ์˜๋ฏธํ•˜๋Š”์ง€ ์•Œ๊ธฐ ํž˜๋“ ๋ฐ ๋นŒ๋”๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด 180์€ height์ด๊ตฌ๋‚˜ 150์€ iq๊ตฌ๋‚˜!

๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค! (๊ฐ€๋…์„ฑ์ด ๋†’์Œ)

728x90