Exemple #1
0
        static void Main(string[] args)
        {
            //Abstract Factory
            var      template = TemplateEnum.Books;
            IFactory factory;

            switch (template)
            {
            case TemplateEnum.Shopee:
                factory = new ShopeeFactory();
                break;

            case TemplateEnum.Books:
                factory = new BooksFactory();
                break;

            default:

                throw new Exception($"template not valid ");
            }
            var order   = factory.CreateOrder();
            var invoice = factory.CreateInvoice();

            order.Upload();
            invoice.Upload();

            //Simple Factory
            var orderS   = SimpleFactory.CreateOrder(template);
            var invoiceS = SimpleFactory.CreateInvoice(template);

            orderS.Upload();
            invoiceS.Upload();

            //Simple Factory with Reflection
            var orderR   = SimpleFactoryReflection.CreateOrder(template);
            var invoiceR = SimpleFactoryReflection.CreateInvoice(template);

            orderR.Upload();
            invoiceR.Upload();
        }
Exemple #2
0
        static void Main(string[] args)
        {
            var template = TemplateEnum.Books;

            IFactory factory;

            switch (template)
            {
            case TemplateEnum.Shopee:
                factory = new ShopeeFactory();
                break;

            case TemplateEnum.Books:
                factory = new BooksFactory();
                break;

            default:

                throw new Exception($"template not valid ");
            }
            var order = factory.CreateOrder();

            order.Upload();
        }
Exemple #3
0
 public BooksService(BooksFactory bookFactory, DataContext db)
 {
     _bookFactory = bookFactory;
     _db          = db;
 }
 private BookFactorySingleton()
 {
     BooksFactory = new BooksFactory();
 }
Exemple #5
0
 /// <summary>
 /// Injects books module
 /// </summary>
 /// <param name="services">The service collection</param>
 /// <returns>The updated service collection</returns>
 public static IServiceCollection AddBooks(this IServiceCollection services)
 {
     return(services.AddScoped(x => BooksFactory.CreateRepository(x.GetService <BookShopContext>()))
            .AddScoped(x => BooksFactory.CreateComponent(x.GetService <IBookRepository>())));
 }