public ProductionFacadeWithoutNotifier(IPhoneRepository phones, IWarehouseRepository warehouses, IImportFeeCalculator importCalculator, IProductionFactory productionFactory, IPhoneSupplier phoneSupplier) { this.phones = phones; this.warehouses = warehouses; this.importCalculator = importCalculator; this.productionFactory = productionFactory; this.phoneSupplier = phoneSupplier; }
public ProductionFacadeWithNotifier(IPhoneRepository phones, IWarehouseRepository warehouses, IImportFeeCalculator importCalculator, IProductionFactory productionFactory, IPhoneSupplier phoneSupplier, IPhonesSuppliedListener listener) { this.phones = phones; this.warehouses = warehouses; this.importCalculator = importCalculator; this.productionFactory = productionFactory; this.phoneSupplier = phoneSupplier; if (null != listener) { this.phoneSupplier.RegisterPhonesSuppliedListener(listener); } }
// SOLID Principles: Order processor class close for modification and open for extensibility // if we need t0 add shipping calculator for exaple we just add a new Interface // seperation of concerns, open for extens/closed for modification and Interface segragation. public OrderProcessor(ITaxCalculator taxCalculator, IImportFeeCalculator importFeeCalculator) { _taxCalculator = taxCalculator; _importFeeCalculator = importFeeCalculator; }