الگوی سردر Facade Pattern
نویسنده: علی یگانه مقدم
تاریخ: ۱۳۹۵/۰۱/۲۳ ۱۳:۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
class Book
{
public int Id { get; set; }
public string Title { get; set; }
public int Quantity { get; set; }
public bool IsLoanable { get; set; }
} class User
{
public int Id { get; set; }
public string Title { get; set; }
public string CellPhoneNumber { get; set; }
} class Loan
{
public DateTime ExpiredDate { get; set; }
public User User { get; set; }
} class BookManager
{
public Book GetBook(int id)
{
return new Book()
{
Id=id,
Title = "a book",
Quantity = 3,
IsLoanable = true
};
}
} public int IsLoan(int bookId)
{
return 2;
}
public List<Loan> GetLoans(int bookId)
{
return new List<Loan>()
{
new Loan()
{
ExpiredDate = DateTime.Now.AddDays(-15),
User = new User()
{
Id = 2,
Title = "User1",
CellPhoneNumber = "342342424"
}
},
new Loan()
{
ExpiredDate = DateTime.Now.AddDays(5),
User = new User()
{
Id = 56,
Title = "User56",
CellPhoneNumber = "324324324324"
}
}
};
} class SmsManager
{
public void SendMessage(string number)
{
Console.WriteLine("please take back the book to the library : "+number);
}
} class FacadeBookLoan
{
private readonly BookManager _bookManager;
private readonly LoanManager _loanManager;
private readonly SmsManager _smsManager;
public FacadeBookLoan()
{
_bookManager = new BookManager();
_loanManager=new LoanManager();
_smsManager=new SmsManager();
}
public int IsLoanable(int bookId)
{
var book = _bookManager.GetBook(2);
if (book == null)
return -2;
if (!book.IsLoanable)
return -1;
var howManyBookIsLoaned = _loanManager.IsLoan(bookId);
if(howManyBookIsLoaned>0) ManageLoaners(bookId);
return book.Quantity - howManyBookIsLoaned;
}
private void ManageLoaners(int bookId)
{
var loans = _loanManager.GetLoans(bookId);
foreach (var loan in loans)
{
if (loan.ExpiredDate > DateTime.Now)
{
_smsManager.SendMessage(loan.User.CellPhoneNumber);
}
}
}
} var myfacade=new FacadeBookLoan(); var loansCount= myfacade.IsLoanable(2); Console.WriteLine(loansCount > 0 ? "you can loan the book" : "you can't loan the book");
please take back the book to the library : 324324324324 you can loan the book