Builder
๊ฐ๋
BuilderBase๋ ScreenSystem์ ๊ธฐ๋ฅ ์ค ํ๋๋ก, DI Container์ ์ฐ๋ํ์ฌ ํ๋ฉด์ ์์ฑํ๊ณ Page์ Modal์ ์์ฑํฉ๋๋ค.
๋ค์ ํ๋ฉด์์ ์ฌ์ฉํ ์์๋ Parameter๋ก ์ ์ํ์ฌ ์ ๋ฌํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ์ธ๋ฒคํ ๋ฆฌ์์ ์์ดํ ์ ๋๋ฌ ์์ธ ์์ดํ ํ์ด์ง๋ก ๋์ด๊ฐ๋ UI๋ผ๊ณ ํ๋ค๋ฉด,
์ ํํ ์์ดํ ์ ID๋ฅผ ๋ค์ ํ๋ฉด์ผ๋ก ํ๋ผ๋ฏธํฐ๋ฅผ ํตํด ์ ๋ฌํ ์ ์์ต๋๋ค.
Sign In Modal ์์์ ์์ ์ฝ๋
public class SignInModalBuilder : ModalBuilderBase<SignInModalLifecycle, SignInModalView>
{
public SignInModalBuilder(bool playAnimation) : base(playAnimation)
{
}
}
๋ง์ฝ ํ๋ผ๋ฏธํฐ๋ฅผ ํ๋ฉด ํธ์ถ์์ ์ ๋ฌํ๊ณ ์ถ๋ค๋ฉด
ModalBuilderBase, PageBuilderBase ๋ ํ๋ผ๋ฏธํฐ๊ฐ ์๋ ๋ฒ์ ๊ณผ ์๋ ๋ฒ์ ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
namespace ScreenSystem.Modal
{
public abstract class ModalBuilderBase<TModal, TModalView, TParameter> : ModalBuilderBase<TModal, TModalView>
where TModal : IModal
where TModalView : ModalViewBase
{
public ModalBuilderBase(TParameter parameter, bool playAnimation = true, string overridePrefabName = null);
โ
protected override void SetUpParameter(LifetimeScope lifetimeScope);
โ
public async UniTask<IModal> Build(ModalContainer modalContainer, LifetimeScope parent, CancellationToken cancellationToken);
}
โ
public abstract class ModalBuilderBase<TModal, TModalView> : IModalBuilder
where TModal : IModal
where TModalView : ModalViewBase
{
public ModalBuilderBase(bool playAnimation = true, string overridePrefabName = null);
}
}
๋ง์ฝ, ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฌ๋ฐ๋ BuilderBase๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ, ํด๋น ํ๋ฉด์ LifetimeScope ์ญ์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ๋ LifetimeScopeWithParameter<T>
๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๊ทธ๋ ๊ฒ ํ๋ฉด, Builder์ธก์์ ํ๋ฉด์ ์์ฑํ ๋ ์๋์ผ๋ก LifetimeScope ์ชฝ์ผ๋ก ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฌํด ์ค๋๋ค.
Last updated