File tree Expand file tree Collapse file tree
out/production/Design-Patterns/META-INF
src/main/kotlin/creational/abstractfactory/platform_ui Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ package src.main.kotlin.creational.abstractfactory.platform_ui
2+
3+ import src.main.kotlin.creational.abstractfactory.platform_ui.factory.MacOsPlatform
4+ import src.main.kotlin.creational.abstractfactory.platform_ui.factory.WindowsPlatform
5+ import src.main.kotlin.creational.abstractfactory.platform_ui.factory.abs_factory.PlatformService
6+
7+ fun main () {
8+ val platformService = PlatformService ()
9+ platformService.platform(WindowsPlatform ())
10+ platformService.renderUI()
11+
12+ platformService.platform(MacOsPlatform ())
13+ platformService.renderUI()
14+ }
Original file line number Diff line number Diff line change 1+ package src.main.kotlin.creational.abstractfactory.platform_ui.factory
2+
3+ import src.main.kotlin.creational.abstractfactory.platform_ui.windows.MacOsButton
4+ import src.main.kotlin.creational.abstractfactory.platform_ui.windows.MacOsTextField
5+ import src.main.kotlin.creational.abstractfactory.platform_ui.windows.WindowsButton
6+ import src.main.kotlin.creational.abstractfactory.platform_ui.windows.WindowsTextField
7+
8+ class MacOsPlatform : PlatformUI () {
9+ override fun createButton () = MacOsButton ()
10+
11+ override fun createTextField () = MacOsTextField ()
12+ }
Original file line number Diff line number Diff line change 1+ package src.main.kotlin.creational.abstractfactory.platform_ui.factory
2+
3+ import src.main.kotlin.creational.abstractfactory.platform_ui.ui_component.Button
4+ import src.main.kotlin.creational.abstractfactory.platform_ui.ui_component.TextField
5+
6+ abstract class PlatformUI {
7+ abstract fun createButton ():Button
8+ abstract fun createTextField ():TextField
9+ }
Original file line number Diff line number Diff line change 1+ package src.main.kotlin.creational.abstractfactory.platform_ui.factory
2+
3+ import src.main.kotlin.creational.abstractfactory.platform_ui.windows.WindowsButton
4+ import src.main.kotlin.creational.abstractfactory.platform_ui.windows.WindowsTextField
5+
6+ class WindowsPlatform : PlatformUI () {
7+ override fun createButton () = WindowsButton ()
8+
9+ override fun createTextField () = WindowsTextField ()
10+ }
Original file line number Diff line number Diff line change 1+ package src.main.kotlin.creational.abstractfactory.platform_ui.factory.abs_factory
2+
3+ import src.main.kotlin.creational.abstractfactory.platform_ui.factory.PlatformUI
4+ import src.main.kotlin.creational.abstractfactory.platform_ui.ui_component.Button
5+ import src.main.kotlin.creational.abstractfactory.platform_ui.ui_component.TextField
6+
7+ class PlatformService {
8+ private lateinit var button: Button
9+ private lateinit var textField: TextField
10+
11+ fun platform (platformUI : PlatformUI ){
12+ button= platformUI.createButton()
13+ textField= platformUI.createTextField()
14+ }
15+
16+ fun renderUI (){
17+ button.paint()
18+ textField.paint()
19+ }
20+ }
Original file line number Diff line number Diff line change 1+ package src.main.kotlin.creational.abstractfactory.platform_ui.windows
2+
3+ import src.main.kotlin.creational.abstractfactory.platform_ui.ui_component.Button
4+
5+ class MacOsButton :Button {
6+ override fun paint () {
7+ println (" MacOS button painted" )
8+ }
9+
10+ override fun click () {
11+ println (" MacOS button clicked" )
12+ }
13+ }
Original file line number Diff line number Diff line change 1+ package src.main.kotlin.creational.abstractfactory.platform_ui.windows
2+
3+ import src.main.kotlin.creational.abstractfactory.platform_ui.ui_component.TextField
4+
5+ class MacOsTextField :TextField {
6+ override fun paint () {
7+ println (" MacOS Text field painted" )
8+ }
9+
10+ override fun enter (input : String ) {
11+ println (" data entered in text field" )
12+ }
13+ }
Original file line number Diff line number Diff line change 1+ package src.main.kotlin.creational.abstractfactory.platform_ui.ui_component
2+
3+ interface Button {
4+ fun paint ()
5+ fun click ()
6+ }
Original file line number Diff line number Diff line change 1+ package src.main.kotlin.creational.abstractfactory.platform_ui.ui_component
2+
3+ interface Checkbox {
4+ fun paint ()
5+ fun click ()
6+ }
You can’t perform that action at this time.
0 commit comments