« Bridge pattern » : différence entre les versions
Apparence
Page créée avec « Category:CSharp Category:Design Patterns = Description = * Decouple an abstraction from its implementation so that the two can vary independently » |
Aucun résumé des modifications |
||
Ligne 2 : | Ligne 2 : | ||
[[Category:Design Patterns]] | [[Category:Design Patterns]] | ||
= Description = | = Description = | ||
* Decouple an abstraction from its implementation so that the two can vary independently | * Decouple an abstraction from its implementation so that the two can vary independently. | ||
= Exemple = | |||
<filebox fn='ILogger.cs'> | |||
public interface ILogger | |||
{ | |||
void WriteLine(string text); | |||
} | |||
</filebox> | |||
<filebox fn='ConsoleLogger'> | |||
public class ConsoleLogger : ILogger | |||
{ | |||
public void WriteLine(string text) | |||
{ | |||
Console.WriteLine(text); | |||
} | |||
} | |||
</filebox> | |||
<filebox fn='IUserService.cs'> | |||
public interface IUserService | |||
{ | |||
void ChangePassword(int userId, string newPassword); | |||
} | |||
</filebox> | |||
<filebox fn='UserService.cs'> | |||
public class UserService : IUserService | |||
{ | |||
private ILogger logger; | |||
public UserService(ILogger logger) | |||
{ | |||
this.logger = logger; | |||
} | |||
public void ChangePassword(int userId, string newPassword) | |||
{ | |||
logger.WriteLine($"Password has been change for user {userId}."); | |||
} | |||
} | |||
</filebox> | |||
<kode lang='cs'> | |||
IUserService userService = new UserService(new ConsoleLogger()); | |||
userService.ChangePassword(1, "0000"); | |||
</kode> |
Version du 6 juin 2020 à 22:22
Description
- Decouple an abstraction from its implementation so that the two can vary independently.
Exemple
ILogger.cs |
public interface ILogger
{
void WriteLine(string text);
}
|
ConsoleLogger |
public class ConsoleLogger : ILogger
{
public void WriteLine(string text)
{
Console.WriteLine(text);
}
}
|
IUserService.cs |
public interface IUserService
{
void ChangePassword(int userId, string newPassword);
}
|
UserService.cs |
public class UserService : IUserService
{
private ILogger logger;
public UserService(ILogger logger)
{
this.logger = logger;
}
public void ChangePassword(int userId, string newPassword)
{
logger.WriteLine($"Password has been change for user {userId}.");
}
}
|
IUserService userService = new UserService(new ConsoleLogger());
userService.ChangePassword(1, "0000");
|