https://github.com/solutena/observable
https://github.com/solutena/observable
design-pattern observable observablecollection observer-pattern unity unitypackage
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/solutena/observable
- Owner: solutena
- Created: 2024-10-15T15:58:30.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-02-20T05:05:55.000Z (5 months ago)
- Last Synced: 2025-04-08T16:11:38.259Z (3 months ago)
- Topics: design-pattern, observable, observablecollection, observer-pattern, unity, unitypackage
- Language: C#
- Homepage:
- Size: 92.8 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Observable
옵저버 패턴을 구현하여 값이 변경될 때 구독자들에게 알림을 보내는 기능을 제공합니다.
# 설치

1. URL 복사

2. 패키지 매니저에서 Add Package from Git URL 선택

3. 복사한 URL로 설치# Observable\
`Observable` 클래스는 T 타입의 값에서 변경 사항을 추적할 수 있는 간단한 방법을 제공합니다.
값이 업데이트될 때 이벤트를 발생시키는 메커니즘이 포함되어 있습니다.
직렬화를 지원합니다.
### 이벤트
값이 변경되면 `OnChanged` 이벤트가 호출됩니다.이 이벤트는 이전 값과 현재 값을 전달합니다.
### 암시적 변환
Observable 객체를 T 타입으로 암시적으로 변환합니다.
```C#
var o = new Observable(10);
int i = o;
```## 예제
```C#
var o = new Observable(10);//구독
o.OnChanged += (prev, current) =>
{
Console.WriteLine($"Value changed from {prev} to {current}");
};o.Value = 20; // 출력: Value changed from 10 to 20
```# IObservableCollection
`ObservableDictionary``ObservableHashSet`
`ObservableList`
지원되는 컬렉션입니다.
직렬화를 지원합니다.
### 이벤트
컬렉션이 변경되면 이벤트가 호출됩니다.`OnAddedChanged` : 추가된 요소를 전달합니다.
`OnRemovedChanged` : 삭제된 요소를 전달합니다.
`OnUpdatedChanged` : 변경된 요소를 전달합니다. (ObservableList, ObservableDictionary)
`OnCollectionChanged` : 변경된 컬렉션을 전달합니다.
### 함수
`TriggerAddedChanged(T item)` : OnAddedChanged 이벤트를 강제로 호출합니다.`TriggerRemovedChanged(T item)` : OnRemovedChanged 이벤트를 강제로 호출합니다.
`TriggerUpdatedChanged(T item)` : OnUpdatedChanged 이벤트를 강제로 호출합니다.
`TriggerCollectionChanged()` : OnCollectionChanged 이벤트를 강제로 호출합니다.
`Initialize` : 이벤트를 호출하지 않고 컬렉션을 새로 덮어씁니다.
### 암시적 변환
컬렉션을 해당 타입으로 암시적으로 변환합니다.
```C#
ObservableList o = new();
List l = o;
```## 예제
```C#
ObservableList o = new();
o.OnAddedChanged += OnAddedChanged;void OnAddedChanged(int item)
{
}
```
이벤트를 자동완성하면, 알맞은 타입으로 구성되어타입 오류를 방지하고 편리하게 사용할 수 있습니다.