은 내 사이트가 다른 가입 유형, 무료, 프리미엄 등이러한 한도 (업무 제한)는 어떻게 적용합니까?
지금까지 내가 내 모든 계정 유형에 대한 이런 짓을 그래서 지금이
public abstract class Limits
{
public int PostLimit { get; protected set; }
protected Limits(int postLimit)
{
PostLimit = postLimit;
}
public bool IsLimitReached(int postCount)
{
return postCount > PostLimit
}
}
public class FreeLimit : Limits
{
private const int postLimit = 1;
public FreeLimit()
: base(postLimit)
{
}
}
처럼 추상 클래스를 만든을 지원하고자 . 이제 문제는 실제로이 클래스를 실제로 사용하는 방법을 모른다는 것입니다.
는 예를 들어 나는 서비스 계층 콜 PostService이이 클래스에 나는 그들이 한계에 도달 여부를 확인하는 방법을 모르는이 방법 지금
public void CreatePost(Post post)
{
// do stuff here
}
있습니다. 내가 어떻게 FreeLimit 또는 PremiumLimit을 사용해야하는지 또는 그들이 가지고있는 계정을 알아 내는지 확신 할 수 없기 때문에 확인 방법을 모른다.
나는 먼저 자신의 역할을 파악한 다음 그 정보를 사용하여 올바른 클래스를 만들어야한다고 생각합니다.
는 내가 제한이 작업을 수행해야합니다 확인해야하는 모든 방법에 대해 지금처럼이 방법을 좋아하지 않는 내가
public void CreatePost(Post post, PlanType planType)
{
Limits limit;
switch(planType)
{
case planType.Free:
limit = new FreeLmit()
break;
}
if(limit.IsLimitReached())
{
// do stuff
}
}
같은 무언가가있을 것 같아요. 내 서비스 계층에서이 검사가 필요한 몇 가지 방법이 있습니다.
그래서 나는 그것을 내 생성자에 넣을 생각을하고 있었지만 생성자에서 switch 문을 사용하는 것이 좋은지 잘 모릅니다.
게시 지점, PlanType planType을 확인해야하는 CreatePost보다 많은 방법이 있다는 뜻입니까? –
@Caspar Kleijne - 글쎄, 이건 내가 만든 예일 뿐이야. PlanType은 현재 사용중인 계획을 보유하는 enum입니다. – chobo2
Limits를 추상 클래스로 사용하고 상속 한 것에 동의하지 않습니다.하위 클래스가 숫자에 따라 다를 경우 하위 클래스를 사용해야하는 이유는 무엇입니까? – Amy