[JAVA] BEAN

김나영·2022년 8월 3일
0

Bean

  • 값을 가지고 있는 객체
  • 주고받는 것
  • VO = Value Object
  • DTO = Date Transfer Object
  • 생성방법 : Constructor , setter

Singleton 패턴

여러개의 객체가 만들어지면 안될때 사용, 객체는 하나만 생성된다.

  • User 클래스

    public class User{
    // static 필드
    // 객체 생성 이전에 메모리에 미리 만들어 두는 필드
    	private static User user = new User();
        private User() {
        // User 객체 생성은 User 내부에서만 가능하다. 
        }
        // static 메소드 ( 클래스 메소드 )
        // 클래스가 생성될 때 함께 생성되는 메소드
        // 객체 생성 이전에 만들어지기 때문에 객체로 접근하지 않는다.
        // 클래스 이름으로 접근한다.
        // User user = User.getInstance();
        public static User getInstance(){
        	return user;
        }
    }
  • Main 클래스

    public class Main {
    	public static void main(String[] args) {		
    		 // singleton 객체는 하나만 생성된다.		
    		User user1 = User.getInstance();
    		System.out.println(user1);	
    		User user2 = User.getInstance();
    		System.out.println(user2);	
    		// User user = new User();  외부에서는 새로운 객체를 생성할 수 없음
    	}
    }
  • 결과


Builder 패턴

클래스 내부에 클래스 만들기

  • User 클래스
    public class User{
    	//필드 (Builder 객체가 가진 값을 받아옴)
        private int userNo;
        private String id;
    	private String email;
        // Builder 클래스의 build() 메소드가 호출하는 생성자
        public User(Builder builder) {
        	this.userNo = builder.userNo;
            this.id = builder.id;
    		this.email = builder.email;
        }
        // Builder 반환 메소드
        public static Builder builder() {
        	return new Builder();
        }
        // User 클래스 내부에 Builder 클래스 생성
        // User 클래스를 이용해서 호출하기 위해 static 처리
        public static class Builder{
        	// 내부 필드 (여기에 값을 전달 받아서 User의 필드로 보내는 원리
            private int userNo;
    		private String id;
    		private String email;
    		// userNo() 메소드
            public Builder userNo(int userNo) {
    			this.userNo = userNo;
    			return this;
    		}
            //id() 메소드
    		public Builder id(String id) {
    			this.id = id;
    			return this;
    		}
            //email() 메소드
    		public Builder email(String email) {
    			this.email = email;
    			return this;
    		}
            // build() 메소드
    		public User build() {
    			return new User(this);     // this는 Builder 객체(userNo, id, email을 가지고 있는 객체)를 의미함
    		}
        }  // class Builder
        @Override
    	public String toString() {
    		return "User [userNo=" + userNo + ", id=" + id + ", email=" + email + "]";
    	}
    }
  • Main 클래스

    public class Main {
    	public static void main(String[] args) 	
    		User user = User.builder()
    				.userNo(1)
    				.id("admin")
    				.email("admin@naver.com")
    				.build();		
    		System.out.println(user);
    	}
    }
  • 결과


Lombok

  • User 클래스

    import lombok.AllArgsConstructor;
    import lombok.Builder;
    import lombok.Getter;
    import lombok.NoArgsConstructor;
    import lombok.Setter;
    import lombok.ToString;
    @Getter
    @Setter
    @NoArgsConstructor
    @AllArgsConstructor
    @Builder
    @ToString
    public class User {
    	private int userNo;
    	private String id;
    	private String email;
    }
  • Main 클래스

    public class Main {
    	public static void main(String[] args) 	
    		User user1 = new User();
    		user1.setUserNo(1);
    		user1.setId("admin");
    		user1.setEmail("admin@naver.com");
    		System.out.println(user1);		
    		User user2 = new User(1, "admin", "admin@naver.com");
    		System.out.println(user2);		
    		User user3 = User.builder()
    				.userNo(1)
    				.id("admin")
    				.email("admin@naver.com")
    				.build();
    		System.out.println(user3);				
    	}
    }
  • 결과
profile
응애 나 애기 개발자

0개의 댓글