الگوی Chain Of Responsibility در #C
نویسنده: میلاد گنجی
تاریخ: ۱۳۹۸/۰۹/۲۶ ۱۱:۵۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
public class Customer
{
public string Password { get; set; }
public string Stno { get; set; }
public int value { get; set; }
public bool Active { get; set; }
} public class RequestContext
{
public int VamValue { get; set; }
public Customer student { get; set; }
} public class ResponseContext
{
public string Response { get; set; }
} public abstract class GetVam
{
protected readonly GetVam successor;
public GetVam(GetVam _getVam)
{
this.successor = _getVam;
}
public abstract ResponseContext execute(RequestContext requestContext);
} public class CheckUseractive : GetVam
{
public CheckUseractive(GetVam _getVam) : base(_getVam)
{
}
public override ResponseContext execute(RequestContext requestContext)
{
if (requestContext.student.Active == true)
{
return successor.execute(requestContext);
}
else
{
return new ResponseContext
{
Response = "student is inactive"
};
}
}
} public class ChechPassword : GetVam
{
public ChechPassword(GetVam _getVam) : base(_getVam)
{
}
public override ResponseContext execute(RequestContext requestContext)
{
if (requestContext.student.Password == "123")
{
return successor.execute(requestContext);
}
else
{
return new ResponseContext
{
Response = "invalid pass",
};
}
}
} public class ChechUserBedehkar : GetVam
{
public ChechUserBedehkar(GetVam _getVam) : base(_getVam)
{
}
public override ResponseContext execute(RequestContext requestContext)
{
if (requestContext.student.value < requestContext.VamValue)
{
return successor.execute(requestContext);
}
else
{
return new ResponseContext
{
Response = "you are dont permission"
};
}
}
} public class AssignVam : GetVam
{
public AssignVam(GetVam _getVam) : base(_getVam)
{
}
public override ResponseContext execute(RequestContext requestContext)
{
return new ResponseContext
{
Response = "value of vam: " + (requestContext.VamValue - requestContext.student.value).ToString();
};
}
} partial class Program
{
static void Main(string[] args)
{
Customer customer = new Customer()
{
Active = true,
Password = "123",
Stno = "111",
value = 2000
};
RequestContext requestContext = new RequestContext()
{
student = customer,
VamValue = 3000,
};
var GetVam = new CheckUseractive(new ChechPassword(new ChechUserBedehkar(new AssignVam(null))));
var res = GetVam.execute(requestContext);
Console.Write(res.Response);
Console.ReadKey();
}
}