Skip to content

Instantly share code, notes, and snippets.

View Ruthenus's full-sized avatar

Ruslan Kachurovskyi Ruthenus

  • Odesa, Ukraine
View GitHub Profile
@sunmeat
sunmeat / Program.cs
Last active January 15, 2026 21:44
RAII C# example
using System.Text;
namespace FileResourceExample
{
class FileResource : IDisposable
{
private FileStream file;
public FileResource(string filePath)
{
file = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write);
@sunmeat
sunmeat / Program.cs
Last active January 15, 2026 22:03
singleton classic C# example
namespace SingletonExample
{
class Program
{
static void Main()
{
Singleton obj = Singleton.GetInstance();
Console.WriteLine(obj.GetValue());
obj.SetValue(75);
@sunmeat
sunmeat / Program.cs
Last active January 15, 2026 22:12
singleton logger C# example
using System.Text;
namespace SingletonLoggerExample
{
public class Logger
{
private static readonly Lazy<Logger> instance = new(() => new Logger());
// сучасний безпечний для потоків singleton за допомогою lazy<t>
private int logCount = 0; // скільки разів відбувався запис рядка у файл
private Logger() // приватний конструктор (забороняє створювати об'єкти поза класом)
@sunmeat
sunmeat / Program.cs
Last active January 15, 2026 22:20
pattern builder C# example
using System.Text;
/* продукт */
class Pizza
{
public string? Dough { get; set; } // корж
public string? Sauce { get; set; } // соус
public string? Topping { get; set; } // начинка
}
@sunmeat
sunmeat / Program.cs
Last active January 15, 2026 22:41
facade C# example
using System.Text;
namespace FacadeExample
{
// клас для прокату лижного спорядження
internal class SkiRent
{
public double RentBoots(int feetSize, int skierLevel) // прокат черевиків
{
// skierLevel: 0-початківець, 1-середній, 2-експерт
@sunmeat
sunmeat / Program.cs
Last active January 23, 2026 09:38
pattern decorator C# example
using System.Text;
namespace CoffeeShop
{
// розміри чашок у мілілітрах
internal enum Size { Small = 80, Medium = 180, Large = 280, ExtraLarge = 500 }
// базовий абстрактний напій
internal abstract class Beverage
{
@sunmeat
sunmeat / Program.cs
Last active January 23, 2026 09:46
adapter pattern C# example
namespace AdapterPatternDemo
{
// інтерфейс кухаря
internal interface IChief
{
object MakeBreakfast(); // приготувати сніданок
object MakeLunch(); // приготувати обід
object MakeDinner(); // приготувати вечерю
}
@sunmeat
sunmeat / Program.cs
Last active January 23, 2026 10:00
inheritance problems
using System.Text;
namespace DuckExample
{
// абстрактна качка
internal abstract class Duck
{
public virtual void Quack()
{
Console.WriteLine("качка крякає!");
@sunmeat
sunmeat / Program.cs
Last active January 23, 2026 10:00
solving #1 (interfaces)
using System.Text;
namespace DuckInterfaces
{
// абстрактна качка
internal abstract class Duck
{
public virtual void Swim()
{
Console.WriteLine("качка плаває!");
@sunmeat
sunmeat / Program.cs
Last active January 23, 2026 10:13
strategy pattern C# example
using System;
using System.Text;
namespace StrategyPatternDucks
{
// інтерфейси поведінки
internal interface IFlyBehavior
{
void Fly();
}