티스토리 뷰

반응형

[1] 문서보기 

 

문서 를 보면

getter와 setter는 object의 프로퍼티들에게 read, write 접근권한을 제공하는 특별한 메소드라고 합니다.

그리고 get, set 키워드를 통해 getter와 setter를 구현할 수 있다고 합니다. 

 

 

[2] 예제

Getter 

이렇게 생긴 User모델과 UserManager가 있다고 해보겠습니다. 

UserManager가 user 프로퍼티를 다른 곳에 read-only로 제공하고 싶다!! 할때 getter를 구현해주면 됩니다. 

class User {
  String id;
  String nickname;
  
  User({
    this.id,
    this.nickname
  });
}

class UserManager {
  User _user;
  User get user => _user;
}

 

그럼 사용하는 다른 파일에서는 user프로퍼티를 읽을 권한만 가지게 됩니다. 

import 'userManager.dart';

void main() {
  var manager = UserManager();
  print(manager.user);

  // 아래는 모두 컴파일에러난다.
  print(manager._user);
  manager._user = User(id: "", nickname: "");
  manager.user = User(id: "", nickname: "");
}

 

 

Setter

user가 set될때마다 다른 작업을 해주고 싶어!! 할때 Setter를 구현해주면 됩니다. 

저는 마땅한 예제가 안떠올라서 user가 set될때마다 id를 프린트해주겠어! 로 했습니다. 

class UserManager {
  User _user;
  
  User get user => _user;
  
  set user(User user) {
    _user = user;
    print(user.id);
  }
}

 

그럼 사용하는 다른 파일에서는 user를 set해줄 권한도 가지게 되고 

import 'userManager.dart';

void main() {
  var manager = UserManager();
  manager.user = User(id: "1", nickname: "죠르디");
  print(manager.user);
    
  // 아래는 모두 컴파일에러 난다.
  print(manager._user);
  manager._user = User(id: "", nickname: "");
}

 

user를 set해줄 때마다 id가 출력되게 됩니다. (아까 setter지정해준 코드-!!)

반응형
댓글