Skip to content

Instantly share code, notes, and snippets.

View sunmeat's full-sized avatar
🐈
MEOW

Oleksandr Zahoruiko sunmeat

🐈
MEOW
View GitHub Profile
@sunmeat
sunmeat / Program.cs
Last active May 31, 2024 12:22
weather C# example (pattern observer)
// подписчик
interface ISubscriber
{
void Like(string content);
void Comment(string content);
void Message(string content);
void Ignore(string content);
void Unsubscribe();
}
@sunmeat
sunmeat / Program.cs
Created May 27, 2024 09:21
strategy pattern C# example
// интерфейсы, описывающие абстрактное поведение
interface FlyBehavior
{
void Fly();
}
interface QuackBehavior
{
void Quack();
}
@sunmeat
sunmeat / Program.cs
Created May 27, 2024 09:17
solving #1 (interfaces)
abstract class Duck // абстрактная утка
{
public virtual void Swim()
{
Console.WriteLine("утка плавает!");
}
public abstract void Display(); // метод абстрактный, так как все утки будут отображаться по-разному
}
@sunmeat
sunmeat / Program.cs
Created May 27, 2024 09:14
inheritance problems
abstract class Duck // абстрактная утка
{
public virtual void Quack()
{
Console.WriteLine("утка крякает!");
}
public virtual void Swim()
{
Console.WriteLine("утка плавает!");
@sunmeat
sunmeat / Program.cs
Created May 27, 2024 08:39
mediator pattern C# example
// абстрактный базовый класс-"коллега"
abstract class BodyPart
{
protected Brain brain; // ссылка на медиатор
public BodyPart(Brain brain)
{
this.brain = brain;
}
@sunmeat
sunmeat / Program.cs
Created May 27, 2024 08:30
adapter pattern C# example
using System.Media;
using System.Net;
using System.Runtime.InteropServices;
interface IChief
{
object MakeBreakfast();
object MakeLunch();
object MakeDinner();
}
@sunmeat
sunmeat / Program.cs
Created May 27, 2024 08:18
pattern decorator C# example
// размеры чашек
enum Size { S = 80, M = 180, L = 280, XXL = 500 }
abstract class Beverage // базовый абстрактный напиток
{
protected Size size;
protected double price;
protected string? description;
public Size GetSize()
@sunmeat
sunmeat / Program.cs
Created May 27, 2024 08:13
facade C# example
// https://bukovel.com/ru/ski/hire
class SkiRent // аренда снаряжения
{
public double RentBoots(int feetSize, int skierLevel) // ботинки
{
double price = 259.99;
// if (feetSize < 35) price -= 20; // скидка для детей
return price;
}
@sunmeat
sunmeat / Program.cs
Created May 27, 2024 08:06
pattern builder C# example
/* Продукт */
class Pizza
{
public string? Dough { get; set; } // корж
public string? Sauce { get; set; } // соус
public string? Topping { get; set; } // начинка
}
/* Абстрактный Строитель */ // можно воспринимать, как пиццеола
abstract class PizzaBuilder
@sunmeat
sunmeat / Program.cs
Created May 27, 2024 07:59
singleton logger C# example
namespace SingletonLoggerExample
{
public class Logger
{
private static Logger? instance; // приватная статическая ссылка на единственный экземпляр класса
private int logCount = 0; // сколько раз происходила запись строки в файл
private Logger() // приватный конструктор (запрещает создавать объекты за пределами класса)
{
}