Skip to content

Learn abstract factory #1

Description

@mehransattari

مثال برای این طراحی : در انتخاب تم برای برنامه

image

در انتخاب میز وصندلی ومبل یک دست که در یک دسته قرار دارند

image

در انتخاب درگاه پرداخت

مثال ما دو درگاه پرداخت داریم یکی زرین پال ویکی بانک ملت
حالا میخاهیم که از یکی از این دو در برنامه استفاده کنیم
میایم از این دیزاین پترن استفاده میکنیم
وارگ هم بعدا لازم ود درگاه دیگری اضافه کنیم میتونیم راحت اضافه کنیم

public interface IPaymentGateway
{
    void ProcessPayment(Order order);
}

public class ZarinPalPaymentGateway : IPaymentGateway
{
    public void ProcessPayment(Order order)
    {
        // پردازش پرداخت از طریق درگاه PayPal
    }
}

public class MelatPaymentGateway : IPaymentGateway
{
    public void ProcessPayment(Order order)
    {
        // پردازش پرداخت از طریق درگاه Stripe
    }
}

در کد بالا پردازش هر بانک را وکد هاش درون هر متد مینویسیم حالا برای استفاده از هر کدوم از فکتوری استفاده میکنیم.

public interface IPaymentGatewayFactory
{
    IPaymentGateway CreatePaymentGateway();
}

public class PayPalPaymentGatewayFactory : IPaymentGatewayFactory
{
    public IPaymentGateway CreatePaymentGateway()
    {
        return new PayPalPaymentGateway();
    }
}

public class StripePaymentGatewayFactory : IPaymentGatewayFactory
{
    public IPaymentGateway CreatePaymentGateway()
    {
        return new StripePaymentGateway();
    }
}
IPaymentGatewayFactory paymentGatewayFactory = new PayPalPaymentGatewayFactory();

IPaymentGateway paymentGateway = paymentGatewayFactory.CreatePaymentGateway();

paymentGateway.ProcessPayment(new Order("10",1500000));

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions