Skip to content

Commit 38e3683

Browse files
committed
platform ui abstract factory
1 parent 28e41d9 commit 38e3683

13 files changed

Lines changed: 136 additions & 0 deletions

File tree

Binary file not shown.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
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+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
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+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
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+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
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+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
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+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
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+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
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+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package src.main.kotlin.creational.abstractfactory.platform_ui.ui_component
2+
3+
interface Button {
4+
fun paint()
5+
fun click()
6+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package src.main.kotlin.creational.abstractfactory.platform_ui.ui_component
2+
3+
interface Checkbox {
4+
fun paint()
5+
fun click()
6+
}

0 commit comments

Comments
 (0)