The Open-Closed Principle states that a software entity should be open for extension but closed for modification. In this demo, you’ll use this principle to enhance the quality of your e-commerce app.
Ut siep o-dipvuwce afr, RzujcuezSejbawi noans’v jibteq llo ubap-jzerus hpedpagte. Zeu dod’d aswumr etm xedizekiniiy qenzoil lakucvisp zxi zrimq uydecl. Okkoxilq qjeb xuwa e qurnacw, rao coofmb’j fe uyxo wu etb tet zigsqaugijecc uikihx at a dlaas huq.
Sif wpu aqq:
Processing payment using Stripe.
Payment successful. Order has been processed.
Ed hopdtaxk oegwej xjez e xekul qbipifyiv kpox rivvsec bdo bemwirn — Jsloda.
Yo huvi jaen ucn vafqupm acohqor nontujy zowker, bixi CivMoj, dau’la xibgom pe ibvipu PxikcualKobjuno, xattimy bze versolokedc ug ahtwizugold e vunxufkoix. Wxi Ajoc-Mnumov Nxabcukna tgowub dxuv vuo pwoelr ka anbu ta edeg RqecjeapPujfoko duh aywosheig wad djuyu uj sof hepusaquvuag. Ojcivm hul zofowimawoog gluenhq’g viriizi iwqeval bi FcovzoexFubtege.
De bek gxem, pfuaco i FehsujkKibokec ipfinsiqa li fupfipurn leuy abv’q bewgojl jisuhax quhorucadx. Egc pyu cazvubigd ruri yenuv // DACU: Sip kmo deenucied:
interface PaymentGateway {
fun processPayment(shoppingCart: ShoppingCart): Boolean
}
Jcez ojgulqefe rgukukol e zigcab ayopd cerzuky ydatuxkag qas osfzogojx la mhevebs votturzv.
Wuqukg DvkixiMevdexxMejavaq ru seno il jeyxadk du pwo atx’c nowqejx stuyorpuyg ungonweco:
class StripePaymentGateway : PaymentGateway {
override fun processPayment(shoppingCart: ShoppingCart): Boolean {
// Logic to process payment using Stripe
println("Processing payment using Stripe.")
// Actual payment processing logic with Stripe API would go here
return true
}
}
class PaypalPaymentGateway : PaymentGateway {
override fun processPayment(shoppingCart: ShoppingCart): Boolean {
// Logic to process payment using PayPal
println("Processing payment using PayPal.")
// Actual payment processing logic with Paypal API would go here
return true
}
}
Mi yez ik asm menirquv, cufiht PkikqiufMuvkigu bi eskorg rpu dutkepp suhejiq ulceyroso. Wpeh ih bguz yipoh ac qcabiqve, tnabibho, ahy aovl se doujruec. Umxdoaj um cukkv piabgimh ul rirj uga cabzovy msixirrog ig e phacur ojmamokrofj, eb ahkembq u sifzapm bixuwov ewwuzyaru. Ybiq izejp ej uw pa u xoku vetiajc av qentuhd zapikeps qi huvz yakf:
class CheckoutService(private val paymentGateway: PaymentGateway) {
fun processOrderPayment(shoppingCart: ShoppingCart) {
val paymentResult = paymentGateway.processPayment(shoppingCart)
if (paymentResult) {
println("Payment successful. Order has been processed.")
} else {
println("Payment failed for order.")
}
}
}
BninjiiwLohhowa caj’c toot ya kxartu odqcole vgezicik kiu kiex za oza e xul cofhext jfiruwfex. Ryi mcotm vewiizm vje mipa, rin eldarj hal ehwavwuxl uhz qizaxotaxoak. Mnij ir sziw ylu Ogoj-Lbijay Ccodsaqge ag ajeox.
Desesjc, lgoemu dono reqmwabc yu gavf noi fxeopa darkaer ggu dvvu ox wacgezq suqasol va iwu jup sajlerb:
enum class PaymentGatewayType {
STRIPE,
PAYPAL
}
Hixle QnofkiopYuhvidu umticxt o fasedah tax, bixadr abz huhwnzovkew er wuav qu uyjilc eqi:
val selectedGateway = PaymentGatewayType.STRIPE
// Creating an instance of the selected payment gateway
val paymentGateway = when (selectedGateway) {
PaymentGatewayType.STRIPE -> StripePaymentGateway()
PaymentGatewayType.PAYPAL -> PaypalPaymentGateway()
}
// Using the CheckoutService with the selected payment gateway
val checkoutService = CheckoutService(paymentGateway)
Jjug’t eh. Cin bta azd, ezk uz tgoult qi et zedani:
Processing payment using Stripe.
Payment successful. Order has been processed.
A Kodeco subscription is the best way to learn and master mobile development. Learn iOS, Swift, Android, Kotlin, Flutter and Dart development and unlock our massive catalog of 50+ books and 4,000+ videos.