Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- ARM
- Stream
- llm을 활용 단어장 앱 개발일지
- Dreamhack
- 영상처리
- DART
- FastAPI
- Flutter
- Computer Architecture
- 파이토치 트랜스포머를 활용한 자연어 처리와 컴퓨터비전 심층학습
- fastapi를 사용한 파이썬 웹 개발
- Image Processing
- MATLAB
- Got
- BOF
- pytorch
- ML
- Kaggle
- C++
- BAEKJOON
- study book
- system hacking
- BFS
- 백준
- MDP
- bloc
- Algorithm
- PCA
- Widget
- rao
Archives
- Today
- Total
Bull
[Dart] Mixin은 언제 사용하나요? 본문
믹스인(Mixin)이란?
다트(Dart)에서 믹스인(Mixin)은 다른 클래스의 기능을 상속받지 않고도 클래스에 추가할 수 있는 방법을 제공합니다. with
키워드를 통해 정의된 믹스인을 추가할 수 있습니다. 믹스인을 사용하면 코드를 재사용할 수 있고, 여러 클래스에 걸쳐 공통된 기능을 쉽게 구현할 수 있습니다.
믹스인 사용 예제
믹스인 정의
mixin Logger {
void log(String message) {
print('Log: $message');
}
}
믹스인 적용
class Person {
String name;
Person(this.name);
}
class Employee extends Person with Logger {
String position;
Employee(String name, this.position) : super(name);
void work() {
log('$name is working as a $position');
}
}
void main() {
var emp = Employee('John', 'Developer');
emp.work(); // Log: John is working as a Developer
}
이 예제에서 Logger
믹스인은 log
메서드를 정의하고, Employee
클래스는 이 믹스인을 적용받아 log
메서드를 사용할 수 있게 됩니다. Employee
객체는 log
메서드를 호출하여 메시지를 출력할 수 있습니다.
믹스인의 장점
- 코드 재사용성: 공통 기능을 여러 클래스에서 재사용할 수 있습니다.
- 다중 상속의 대안: 다트는 다중 상속을 지원하지 않지만, 믹스인을 사용하여 여러 클래스로부터 기능을 가져올 수 있습니다.
- 명확한 코드 구조: 클래스의 주요 기능과 부가적인 기능을 분리하여 코드의 가독성을 높일 수 있습니다.
Extension Method랑 비슷한데 둘 다 같은 거 아니야?
익스텐션 메소드는 기존 클래스에 새로운 메소드를 추가할 수 있게 해주는 기능입니다. 이는 클래스의 원본 소스 코드를 수정하지 않고도 클래스에 기능을 확장할 수 있는 방법을 제공합니다.
익스텐션 메소드 예제
extension StringExtensions on String {
bool isPalindrome() {
return this == split('').reversed.join('');
}
}
void main() {
var word = 'level';
print(word.isPalindrome()); // true
}
주요 차이점
- Minin: 클래스의 정의에 포함되어야 하며, 특정 클래스의 기능을 다른 클래스에 추가하는 데 사용됩니다. 주로 상태를 가지며, 클래스의 인스턴스에 동작을 추가하는 데 적합합니다.
- Extension Method: 기존 클래스에 새로운 메소드를 추가하는 데 사용되며, 클래스 정의를 수정하지 않고도 클래스의 인스턴스에 새로운 기능을 추가할 수 있습니다. 상태를 가지지 않으며, 주로 유틸리티 메소드를 추가하는 데 적합합니다.
공식 문서
'Computer Language > Dart' 카테고리의 다른 글
[Dart::Stream] broadcast method (0) | 2024.08.19 |
---|---|
[Dart::Stream] listen method (0) | 2024.08.19 |
[Dart] Extension Methods란? (0) | 2024.07.15 |
[Dart] Stream이란? (기본, before understanding Bloc Concept) (0) | 2024.07.11 |
[Dart] late String과 String? 의 차이 (0) | 2024.06.10 |