Skip to content

Instantly share code, notes, and snippets.

@tuannguyenssu
Created July 7, 2019 09:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tuannguyenssu/b10afd8cf3115b5e25feade2981145a5 to your computer and use it in GitHub Desktop.
Save tuannguyenssu/b10afd8cf3115b5e25feade2981145a5 to your computer and use it in GitHub Desktop.
// Interface
public interface IDatabase
{
void Save(int orderId);
}
public interface ILogger
{
void LogInfo(string info);
}
public interface IEmailSender
{
void SendEmail(int userId);
}
// Các Module implement các Interface
public class Logger : ILogger
{
public void LogInfo(string info) {}
}
public class Database : IDatabase
{
public void Save(int orderId) {}
}
public class EmailSender : IEmailSender
{
public void SendEmail(int userId) {}
}
// Hàm checkout mới sẽ như sau
public void Checkout(int orderId, int userId)
{
// Nếu muốn thay đổi database, logger ta chỉ cần thay dòng code dưới
// Các Module XMLDatabase, SQLDatabase phải implement IDatabase
//IDatabase db = new XMLDatabase();
//IDatebase db = new SQLDatabase();
IDatabase db = new Database();
db.Save(orderId);
ILogger log = new Logger();
log.LogInfo("Order has been checkout");
IEmailSender es = new EmailSender();
es.SendEmail(userId);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment