Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public abstract class SadLogicBase
- {
- // если тут лежит нул - весь класс рухнет.
- protected IConnection _connection; // SQL? MySQL? Postegre?
- public virtual void Setup()
- {
- _connection = new SQLServerConnection();
- }
- }
- public class DrunkSadLogic : SadLogicBase
- {
- override Setup()
- {
- // game over
- _connection = null; // or just forgot. Потребитель базового класса НЕ ОБЯЗАН вообще знать что там за поля лежат, ок да?
- }
- }
- ////////////////////////////////////////////////////////
- public abstract class HappyLogicBase
- {
- // private IConnection _connection;
- public void Setup()
- {
- _connetion = CreateConnection();
- if (_connection == null || !IsValid(_connection))
- {
- // и тут мы сразу знаем источник ошибки
- throw new InvalidOperationException("Кодер ты пьян иди домой");
- }
- }
- protected abstract IConnection CreateConnection();
- }
- public class CorrectHappyLogic : HappyLogicBase{
- // просим студию набросать сюда все abstract методы
- // обана, базовому классу нужно создать коннекшн. Вроде все четко и ясно. Ок ща все будет
- override IConnection CreateConnection()
- {
- return MySqlConnection(); // beCOZ I like it.
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment