Ich würde gerne eine Art Filterentwurfsmuster für meine Geschäftslogik verwenden.
Bedenken Sie Folgendes:
var shippingFilterCost = {
"Name": "CalculateShippingCostsFilter",
"InjectedServices": "product, shoppingBasket, CalculateProductShipping",
"MainMethod": function (product, shoppingBasket,CalculateProductShipping) {
var shippingCost = CalculateProductShipping(product.weight, shoppingBasket.locationToShipTo);
product.ShippingCost = shippingCost;
return product;
}
}
var checkIfBuyerHasAVouche = {
"Name": "CheckVoucher",
"InjectedServices": "product, shoppingBasket, CheckVoucherValid,CalculateVoucher",
"EntryCondition": function (product, shoppingBasket, CheckVoucherValid, CalculateVoucher) {
var isVoucherValid = CheckVoucherValid(shoppingBasket.voucherCode);
return isVoucherValid;
// we only go to the 'MainMethod' if entryCondition returns true;
},
"MainMethod": function (product, shoppingBasket, CheckVoucherValid, CalculateVoucher) {
var voucherPrice = CalculateVoucher(shoppingBasket.voucherCode);
product.voucherPriceReduction = voucherPrice;
return product;
}
}
Wir werden also ein Basisprodukt haben, und dieses Basisprodukt durchläuft diese beiden Filter, die ihm „Informationen“ hinzufügen.
Einer Der Filter berechnet die Versandkosten und ein weiterer den Gutschein.
Vorteile:
- Wir können leicht sehen, welche Dienstleistungen angeboten werden ' werden wo durch ihre Referenzen verwendet.
- Wir kann problemlos verfolgen, welche Methode welche Eigenschaft verändert, da
- Die Dienste sind nur reine Methoden, die etwas zurückgeben.
- Alle Mutationen werden in der Hauptmethode zentralisiert
- Wir haben auch „EntryCondition“. '-Methode können wir trennen und sehen, welche Filter ausgeführt werden und welche nicht.
Wenn ja Eine bessere Idee, wie ich das besser erklären kann, bitte bearbeiten Sie meinen Beitrag.