3.3 KiB
3.3 KiB
지식
1. 코드 비하인드 패턴
- .razor 파일과 .cs 파일을 분리해서 사용하는 방식
- A.razor
├ A.razor.cs
⎿ A.razor.css
역할
- .razor 파일 : 주로 UI 마크업을 포함
- .cs 파일 : 관련 로직을 포함 - @code 블록을 대신해 서로 연결 됨
2. EditForm
- Blazor 제공하는 Form Compornents.
- 데이터 바인딩, 유효성 검사, 폼 제출 처리에 사용
- 사용자 입력 수집하고, 입력 데이터 검증 후 서버나 클라이언트 제출하는 기능 제공
1. InputText
- @bind-Value 로 변수와 엮어주기
<선택사항> - @oninput 은 입력시 수행할 이벤트 엮어주기
- @onblur 는 포커스 해제시 수행할 이벤트 엮어주기
3. Attribute
- 변수나 클래스, 메서드 위에 [ ]를 사용해 속성을 추가
- 코드에서 어떤 동작이나 정보를 제공하거나, 특정 조건에 따라 처리되는 방식을 지정할 수 있다.
- 이미 존재하는(Required, Range, Obsolte, 등) 속성들도 있지만, 사용자가 직접 정의해서 사용할 수 있다.
- 2의 EditForm과 엮으면 좋음
4. Dependency Injection (DI)
- 의존성 관리를 쉽게 하기 위한 설계 패턴으로 객체가 필요로 하는 의존성을 직접 생성하지 않고,
외부에서 주입해주는 방식으로 객체 간 결합도를 줄이고 테스트 가능성과 유연성을 높이는 역할을 한다. - 의존성(Dependency)란?
- 간단하게 한 객체가 다른 객체의 기능, 데이터를 필요로 할 때 이를 의존성이라고 한다.
- A 클래스가 B 클래스의 기능을 사용하면 A는 B에 의존한다고 보면 된다.
- 핵심 개념
- 제어 역전(inversion of Control) : DI도 결국 이 개념의 한 형태로서
전통적으로 객체는 스스로 필요한 의존성을 직접 생성하지만 DI에서는 외부에서 의존성 주입해 객체간 결합도 줄임 - 느슨한 결합 : DI는 클래스 간 결합도 낮추는 방법으로 객체가 다른 객체의 구체적 구현에 의존하지 않고 인터페이스나 추상 클래스에 의존하게 한다.
그로 인해 시스템의 유지보수성과 확장성을 높인다.
- 제어 역전(inversion of Control) : DI도 결국 이 개념의 한 형태로서
5. 싱글턴 패턴
- 가장 유명하고 자주 쓰이면서 남발하면 절대 안되는 패턴
public class Singleton
{
// Lazy 선언으로 사용시에만 객체를 생성하게 하면서 외부에서 접근할 수 없는 단일 인스턴스를 저장한다.
private static Lazy<Singleton> _instance = new Lazy<Singleton>(() => new Singleton());
// 외부에서 해당 인스턴스에 접근하려면 이 속성을 통해서만 접근이 가능
public static Singleton Instance => _instance.Value;
private int value = 0;
// 싱글턴이니까 외부에서 인스턴스 생성 불가하게
private Singleton()
{
// 초기화
}
public int DoSomething(int value)
{
// 그냥 아무 동작이나
Console.WriteLine("DO SINGLETON");
this.value++;
return this.value + value;
}
}
public class Base
{
private void CheckSingle()
{
Singleton ton1 = Singleton.Instance;
Singleton ton2 = Singleton.Instance;
if (ton1 == ton2)
Console.WriteLine("Same");
}
}