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
- BAEKJOON
- rao
- fastapi를 사용한 파이썬 웹 개발
- pytorch
- study book
- PCA
- Kaggle
- bloc
- BOF
- Image Processing
- MATLAB
- FastAPI
- Computer Architecture
- Widget
- Stream
- 백준
- Algorithm
- DART
- 영상처리
- C++
- BFS
- Got
- 파이토치 트랜스포머를 활용한 자연어 처리와 컴퓨터비전 심층학습
- ML
- Dreamhack
- Flutter
- MDP
- system hacking
- llm을 활용 단어장 앱 개발일지
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 |