Skip to content

Commit f8723de

Browse files
committed
Pattern: added bridge
1 parent bb1c968 commit f8723de

File tree

9 files changed

+145
-68
lines changed

9 files changed

+145
-68
lines changed

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@
33
## Table of Contents
44

55
* Creational Patterns
6-
* Abstract Factory
6+
* Abstract Factory
77
* Builder
88
* Factory Method
99
* Prototype
10+
11+
* Structural Patterns
12+
* Bridge
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package org.dronix.kotlin.designpatterns
2+
3+
import org.dronix.kotlin.designpatterns.base.Maze
4+
import org.dronix.kotlin.designpatterns.base.door.Door
5+
import org.dronix.kotlin.designpatterns.base.room.Room
6+
import org.dronix.kotlin.designpatterns.base.wall.BombedWall
7+
import org.dronix.kotlin.designpatterns.base.wall.Wall
8+
import org.dronix.kotlin.designpatterns.creational.abstractFactory.BombedMazeFactory
9+
import org.dronix.kotlin.designpatterns.creational.builder.CountingMazeBuilder
10+
import org.dronix.kotlin.designpatterns.creational.builder.StandardMazeBuilder
11+
import org.dronix.kotlin.designpatterns.creational.factoryMethod.EnchantedMazeGame
12+
import org.dronix.kotlin.designpatterns.creational.prototype.MazePrototypeFactory
13+
14+
fun creationalPattern() {
15+
val mazeBombed = createBombedMaze()
16+
val mazeStandard = createStandardMaze()
17+
val enchantedMaze = createEnchantedMaze()
18+
val countingMaze = createCountingMaze()
19+
20+
val createPrototypeSimple = createPrototypeSimple()
21+
val createPrototypeBomb = createPrototypeBomb()
22+
23+
println(hello())
24+
}
25+
26+
fun createBombedMaze(): Maze {
27+
28+
val bombedMazeFactory = BombedMazeFactory()
29+
val mazeGame = MazeGameCreator()
30+
31+
return mazeGame.createMazeWithAbstractFactory(bombedMazeFactory)
32+
}
33+
34+
fun createStandardMaze(): Maze {
35+
val standardMazeBuilder = StandardMazeBuilder()
36+
val mazeGame = MazeGameCreator()
37+
38+
return mazeGame.createMazeWithBuilder(standardMazeBuilder)
39+
}
40+
41+
fun createEnchantedMaze(): Maze {
42+
val enchantedMaze = EnchantedMazeGame()
43+
return enchantedMaze.createMaze()
44+
}
45+
46+
fun createCountingMaze(): Maze {
47+
val countingMazeBuilder = CountingMazeBuilder()
48+
val mazeGame = MazeGameCreator()
49+
50+
val maze = mazeGame.createMazeWithBuilder(countingMazeBuilder)
51+
val (rooms, doors) = countingMazeBuilder.getCounts()
52+
println("Maze rooms: $rooms doors: $doors")
53+
return maze
54+
}
55+
56+
fun createPrototypeSimple() {
57+
val mazePrototypeFactory = MazePrototypeFactory(Maze(), Wall(), Room(), Door())
58+
val mazeGame = MazeGameCreator()
59+
val maze = mazeGame.createMazeWithAbstractFactory(mazePrototypeFactory)
60+
}
61+
62+
fun createPrototypeBomb() {
63+
val mazePrototypeFactory = MazePrototypeFactory(Maze(), BombedWall(), Room(), Door())
64+
val mazeGame = MazeGameCreator()
65+
val maze = mazeGame.createMazeWithAbstractFactory(mazePrototypeFactory)
66+
}
67+
Lines changed: 3 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,8 @@
11
package org.dronix.kotlin.designpatterns
22

3-
import org.dronix.kotlin.designpatterns.base.Maze
4-
import org.dronix.kotlin.designpatterns.base.door.Door
5-
import org.dronix.kotlin.designpatterns.base.room.Room
6-
import org.dronix.kotlin.designpatterns.base.wall.BombedWall
7-
import org.dronix.kotlin.designpatterns.base.wall.Wall
8-
import org.dronix.kotlin.designpatterns.creational.abstractFactory.BombedMazeFactory
9-
import org.dronix.kotlin.designpatterns.creational.abstractFactory.EnchantedMazeFactory
10-
import org.dronix.kotlin.designpatterns.creational.builder.CountingMazeBuilder
11-
import org.dronix.kotlin.designpatterns.creational.builder.StandardMazeBuilder
12-
import org.dronix.kotlin.designpatterns.creational.factoryMethod.BombedMazeGame
13-
import org.dronix.kotlin.designpatterns.creational.factoryMethod.EnchantedMazeGame
14-
import org.dronix.kotlin.designpatterns.creational.prototype.MazePrototypeFactory
15-
163
fun hello(): String = "Hello, Kotlin/Native Design Patterns!"
174

185
fun main(args: Array<String>) {
19-
20-
val mazeBombed = createBombedMaze()
21-
val mazeStandard = createStandardMaze()
22-
val enchantedMaze= createEnchantedMaze()
23-
val countingMaze = createCountingMaze()
24-
25-
val createPrototypeSimple = createPrototypeSimple()
26-
val createPrototypeBomb = createPrototypeBomb()
27-
28-
println(hello())
29-
}
30-
31-
fun createBombedMaze(): Maze{
32-
33-
val bombedMazeFactory = BombedMazeFactory()
34-
val mazeGame = MazeGameCreator()
35-
36-
return mazeGame.createMazeWithAbstractFactory(bombedMazeFactory)
37-
}
38-
39-
fun createStandardMaze(): Maze{
40-
val standardMazeBuilder = StandardMazeBuilder()
41-
val mazeGame = MazeGameCreator()
42-
43-
return mazeGame.createMazeWithBuilder(standardMazeBuilder)
44-
}
45-
46-
fun createEnchantedMaze(): Maze{
47-
val enchantedMaze = EnchantedMazeGame()
48-
return enchantedMaze.createMaze()
49-
}
50-
51-
fun createCountingMaze(): Maze{
52-
val countingMazeBuilder = CountingMazeBuilder()
53-
val mazeGame = MazeGameCreator()
54-
55-
val maze = mazeGame.createMazeWithBuilder(countingMazeBuilder)
56-
val (rooms, doors)= countingMazeBuilder.getCounts()
57-
println("Maze rooms: $rooms doors: $doors")
58-
return maze
59-
}
60-
61-
fun createPrototypeSimple(){
62-
val mazePrototypeFactory = MazePrototypeFactory(Maze(), Wall(), Room(), Door())
63-
val mazeGame = MazeGameCreator()
64-
val maze = mazeGame.createMazeWithAbstractFactory(mazePrototypeFactory)
65-
}
66-
67-
fun createPrototypeBomb(){
68-
val mazePrototypeFactory = MazePrototypeFactory(Maze(), BombedWall(), Room(), Door())
69-
val mazeGame = MazeGameCreator()
70-
val maze = mazeGame.createMazeWithAbstractFactory(mazePrototypeFactory)
71-
}
72-
6+
creationalPattern()
7+
structuralPattern()
8+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package org.dronix.kotlin.designpatterns
2+
3+
import org.dronix.kotlin.designpatterns.structural.bridge.IconWindow
4+
import org.dronix.kotlin.designpatterns.structural.bridge.XWindowImp
5+
6+
fun structuralPattern(){
7+
bridge()
8+
}
9+
10+
fun bridge(){
11+
12+
val window = IconWindow(XWindowImp())
13+
window.drawContents()
14+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package org.dronix.kotlin.designpatterns.structural.bridge
2+
3+
class IconWindow(windowImp: WindowImp) : Window(windowImp) {
4+
5+
override fun drawContents() {
6+
windowImp.deviceBitmap()
7+
}
8+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package org.dronix.kotlin.designpatterns.structural.bridge
2+
3+
class PMWindowImp : WindowImp {
4+
override fun deviceRect() {
5+
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
6+
}
7+
8+
override fun deviceText() {
9+
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
10+
}
11+
12+
override fun deviceBitmap() {
13+
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
14+
}
15+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package org.dronix.kotlin.designpatterns.structural.bridge
2+
3+
abstract class Window(var windowImp : WindowImp) {
4+
5+
abstract fun drawContents()
6+
7+
fun drawRect(){
8+
windowImp.deviceRect()
9+
}
10+
11+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package org.dronix.kotlin.designpatterns.structural.bridge
2+
3+
interface WindowImp {
4+
5+
fun deviceRect()
6+
fun deviceText()
7+
fun deviceBitmap()
8+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package org.dronix.kotlin.designpatterns.structural.bridge
2+
3+
class XWindowImp : WindowImp{
4+
override fun deviceRect() {
5+
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
6+
}
7+
8+
override fun deviceText() {
9+
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
10+
}
11+
12+
override fun deviceBitmap() {
13+
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
14+
}
15+
}

0 commit comments

Comments
 (0)