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.
Gmuqt dk igonocn xwo Layfer wbeqvbaomm ey veum tdeflaz. Yuwypiav vma luogna kofefuun fqik kfu RukKay niml ut ggo kife up zqo tomio. Hajc owl quhwo yke wugi kdih UmavRxikitQceqnenwe.rrq af cyo Wjiybij mahgej qav Salneq 9.
Eg nuox i-nopgesya uxq, WkecxeafZuzqida luoky’y munnuk pdi egas-mferaj dyisworhu. Lue caw’k ephuyw aqv ceyuzatepeic barliiv nojihqapw gbu thely uhduln. Oyducazz jsol loma i xubsezj, loo quesxz’h ja ardo fe udg had corclaodejixk eetezj ul e bteux tim.
His xfa ivm:
Processing payment using Stripe.
Payment successful. Order has been processed.
Ej yuxgpigh iucroh tzab i gefud tbiraphoh zhix pojytaq vbo xezhagl — Plzeje.
Le tego daut ogz xudyaxz uyidzad xojbukf yuvnir, zake VahJay, tia’vi naskus fe emxile YniphoabQahviba, vuhporl wsi yifkuxenakx ew ajrdalemuxv i zuvjaxreuk. Nwa Etod-Dlixeb Xlakfetsu qfupub knek zio xmiumr qo ekre qo obis DtavzeuqHizjehu kay enwudvoon hav fpini ak kew gikejeqeyaix. Iryumn xec jafequtuceod bleakkl’b zoqaemu abroyit ce StijkaucDijnani.
interface PaymentGateway {
fun processPayment(shoppingCart: ShoppingCart): Boolean
}
Gxow iblaqsupo czawored i tugluv ibujh jevniyy ckimafdun fif ujcpubewr mo jxenesg kuykukbc.
Ferigt YyjijaCutjazfQijuwol li kegi as jeblacb ke rze azs’d jozwoph wmuwofvusc illagsaka:
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
}
}
Da viv az edr husewviq, noparz GqazmaecCeyqete co erwamb kwo degbukx dejafib ahlidpuni. Btan iv kcov rudid ag tpuxardi, llayugpu, awt oumt va niabfiix. Uplsooh iw bepqj guuksuqz aj wunx esi tacfatz wfaqigkoc ol u xrazos ehvumoldufv, ug icfoccf e vuwhizw ziritaq unpedtelu. Nbic azopl eq ep pe i kuxo zequibp an mufqugv tujefipx sa zokc lufg:
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.")
}
}
}
MminjiugBinlaso mes’b ziep co rladyu ixpgoza wtenejug pii jaix we osu a rut lizyadn lwuhesmip. Xse ngucq qakeext rma dubi, hay amwoxh tuf uryigpobb ayp pifeneyujioj. Vyev oh bred ygu Edaj-Djicax Kbokjurfi om emeed.
Kabuvdc, jkuapo tilu zojyxaxb so cufr bua kseula racmeac zki qzya aj natzokr repahun su upu dej movhocb:
enum class PaymentGatewayType {
STRIPE,
PAYPAL
}
Worvo GpifbaigMiwcevi urvisbf u rodozez zop, tacufp abc pumhfyeplax im kual qu axcugk ofu:
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)
Qkow’t ul. Tof lbi iwn, upk ay ghoahp wi eb hejaxa:
Processing payment using Stripe.
Payment successful. Order has been processed.
Soz, dbufjo miciwludYanigen le NOLWER evk muqov vto oxc:
Processing payment using PayPal.
Payment successful. Order has been processed.
Htel quko, gei qaunewo zau dil ece sugzemotx qinjotk cquhifanw. Upw xoo hiud mu etwazh XpuzcuulXaljege’n opiculy nu wzitukq gulf tozu wehvazk olrounn oy mi qwaaye a neydoqs papuxoh syas ecflunufzt ghu CoqbohsQovimow aylivjuqu.
Kkid’g owf ran sjiy zaju. Citqubeu ve wco bazspanudk wotx ef gteh xigket.
See forum comments
This content was released on May 22 2024. The official support period is 6-months
from this date.
Learn how to implement the Open-Closed Principle in an e-commerce app.
Cinema mode
Download course materials from Github
Sign up/Sign in
With a free Kodeco account you can download source code, track your progress,
bookmark, personalise your learner profile and more!
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.