GrayMP

Open/Close example

Aug 13th, 2016
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.46 KB | None | 0 0
  1. public abstract class SadLogicBase
  2. {
  3.       // если тут лежит нул - весь класс рухнет.
  4.       protected IConnection _connection; // SQL? MySQL? Postegre?
  5.       public virtual void Setup()
  6.       {
  7.           _connection = new SQLServerConnection();
  8.       }
  9. }
  10.  
  11. public class DrunkSadLogic : SadLogicBase
  12. {
  13.      override Setup()
  14.     {
  15.         // game over
  16.         _connection = null; // or just forgot. Потребитель базового класса НЕ ОБЯЗАН вообще знать что там за поля лежат, ок да?   
  17.     }
  18. }
  19. ////////////////////////////////////////////////////////
  20. public abstract class HappyLogicBase
  21. {
  22.      // private IConnection _connection;
  23.      public void Setup()
  24.     {
  25.          _connetion = CreateConnection();
  26.          if (_connection == null || !IsValid(_connection))
  27.         {
  28.             // и тут мы сразу знаем источник ошибки
  29.             throw new InvalidOperationException("Кодер ты пьян иди домой");
  30.         }
  31.     }
  32.  
  33.     protected abstract IConnection CreateConnection();
  34. }
  35.  
  36. public class CorrectHappyLogic : HappyLogicBase{
  37.     // просим студию набросать сюда все abstract методы
  38.     // обана, базовому классу нужно создать коннекшн. Вроде все четко и ясно. Ок ща все будет
  39.     override IConnection CreateConnection()
  40.     {
  41.         return MySqlConnection(); // beCOZ I like it.
  42.     }
  43. }
Advertisement
Add Comment
Please, Sign In to add comment