برنامه نویسی

الگوی طراحی سی شارپ: کامپوزیت (پرتغال)

Summarize this content to 400 words in Persian Lang الگوی ترکیبی زمانی استفاده می شود که اشیایی دارید که می توانند در ساختارهای سلسله مراتبی مانند درختان سازماندهی شوند. این به شما امکان می دهد با اشیا و ترکیبات اشیاء به طور یکسان رفتار کنید. یک مثال عملی می‌تواند یک سیستم فایل باشد، که در آن پوشه‌ها می‌توانند حاوی فایل‌ها یا پوشه‌های دیگر باشند، و شما می‌خواهید بتوانید عملیات‌ها را بر روی هر یک از آنها به صورت یکنواخت انجام دهید.

مثال کد در سی شارپ:

// Componente base
public interface IComponente
{
void Exibir();
}

// Objeto folha (um arquivo, por exemplo)
public class Arquivo : IComponente
{
private string _nome;

public Arquivo(string nome)
{
_nome = nome;
}

public void Exibir()
{
Console.WriteLine($”Arquivo: {_nome}”);
}
}

// Objeto composto (uma pasta, por exemplo)
public class Pasta : IComponente
{
private string _nome;
private List<IComponente> _componentes = new List<IComponente>();

public Pasta(string nome)
{
_nome = nome;
}

public void Adicionar(IComponente componente)
{
_componentes.Add(componente);
}

public void Exibir()
{
Console.WriteLine($”Pasta: {_nome}”);
foreach (var componente in _componentes)
{
componente.Exibir();
}
}
}

class Program
{
static void Main(string[] args)
{
// Criar arquivos e pastas
Arquivo arquivo1 = new Arquivo(“arquivo1.txt”);
Arquivo arquivo2 = new Arquivo(“arquivo2.txt”);

Pasta pasta1 = new Pasta(“Documentos”);
pasta1.Adicionar(arquivo1);
pasta1.Adicionar(arquivo2);

// Exibir estrutura da pasta
pasta1.Exibir();
}
}

توضیح کد:

در مثال، File یک شیء ساده (صفحه) است، در حالی که Folder می‌تواند حاوی فایل‌ها یا پوشه‌های دیگری (ترکیب) باشد. هر دو رابط IComponente را پیاده‌سازی می‌کنند و به آن‌ها اجازه می‌دهند به طور یکسان رفتار شوند. در کد اصلی، یک پوشه حاوی دو فایل ایجاد می شود و ساختار به صورت سلسله مراتبی نمایش داده می شود.

نتیجه گیری:

الگوی ترکیبی زمانی مفید است که باید با ساختارهای سلسله مراتبی مانند سیستم های فایل یا منوهای ناوبری سر و کار داشته باشید و به شما این امکان را می دهد که با اشیاء ساده و ترکیبات اشیاء به همان شیوه رفتار کنید.

کد منبع: GitHub

الگوی ترکیبی زمانی استفاده می شود که اشیایی دارید که می توانند در ساختارهای سلسله مراتبی مانند درختان سازماندهی شوند. این به شما امکان می دهد با اشیا و ترکیبات اشیاء به طور یکسان رفتار کنید. یک مثال عملی می‌تواند یک سیستم فایل باشد، که در آن پوشه‌ها می‌توانند حاوی فایل‌ها یا پوشه‌های دیگر باشند، و شما می‌خواهید بتوانید عملیات‌ها را بر روی هر یک از آنها به صورت یکنواخت انجام دهید.

مثال کد در سی شارپ:

// Componente base
public interface IComponente
{
    void Exibir();
}

// Objeto folha (um arquivo, por exemplo)
public class Arquivo : IComponente
{
    private string _nome;

    public Arquivo(string nome)
    {
        _nome = nome;
    }

    public void Exibir()
    {
        Console.WriteLine($"Arquivo: {_nome}");
    }
}

// Objeto composto (uma pasta, por exemplo)
public class Pasta : IComponente
{
    private string _nome;
    private List<IComponente> _componentes = new List<IComponente>();

    public Pasta(string nome)
    {
        _nome = nome;
    }

    public void Adicionar(IComponente componente)
    {
        _componentes.Add(componente);
    }

    public void Exibir()
    {
        Console.WriteLine($"Pasta: {_nome}");
        foreach (var componente in _componentes)
        {
            componente.Exibir();
        }
    }
}

class Program
{
    static void Main(string[] args)
    {
        // Criar arquivos e pastas
        Arquivo arquivo1 = new Arquivo("arquivo1.txt");
        Arquivo arquivo2 = new Arquivo("arquivo2.txt");

        Pasta pasta1 = new Pasta("Documentos");
        pasta1.Adicionar(arquivo1);
        pasta1.Adicionar(arquivo2);

        // Exibir estrutura da pasta
        pasta1.Exibir();
    }
}

توضیح کد:

در مثال، File یک شیء ساده (صفحه) است، در حالی که Folder می‌تواند حاوی فایل‌ها یا پوشه‌های دیگری (ترکیب) باشد. هر دو رابط IComponente را پیاده‌سازی می‌کنند و به آن‌ها اجازه می‌دهند به طور یکسان رفتار شوند. در کد اصلی، یک پوشه حاوی دو فایل ایجاد می شود و ساختار به صورت سلسله مراتبی نمایش داده می شود.

نتیجه گیری:

الگوی ترکیبی زمانی مفید است که باید با ساختارهای سلسله مراتبی مانند سیستم های فایل یا منوهای ناوبری سر و کار داشته باشید و به شما این امکان را می دهد که با اشیاء ساده و ترکیبات اشیاء به همان شیوه رفتار کنید.

کد منبع: GitHub

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا