Skip to content

Commit 4c199cf

Browse files
committed
add ts
1 parent c45197e commit 4c199cf

File tree

12 files changed

+141
-3
lines changed

12 files changed

+141
-3
lines changed

bridge-pattern/js/src/Shape.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ export class Shape {
66
}
77

88
draw(x, y, radius) {}
9-
}
9+
}

bridge-pattern/js/test/test.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export function test() {
77
const circle = new Circle(new DrawStyleA())
88
// 调用对象的方法,里面执行了工具类的方法
99
circle.draw(10, 20, 50)
10-
//还可以调用父类里的方法
10+
// 还可以调用父类里的方法
1111
circle.drawDone()
1212

1313
// /*********************** 分割线 ******************************************/
@@ -31,7 +31,6 @@ jarry@jarrys-MacBook-Pro js % npm run test
3131
// or node execution
3232
jarry@jarrys-MacBook-Pro js % node test/test.js
3333
test start:
34-
test start:
3534
Circle::draw() [x=10 y=20 radius=50]
3635
DrawStyleA:drawStyle()
3736
RefinedShape::drawDone(), 执行的drawTool是: DrawStyleA

bridge-pattern/ts/package.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"name": "esm-project",
3+
"version": "1.0.0",
4+
"main": "test/test.js",
5+
"scripts": {
6+
"test": "node test/test.js"
7+
},
8+
"type": "module"
9+
}

bridge-pattern/ts/src/Circle.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { RefinedShape } from './RefinedShape.js'
2+
import { DrawTool } from './DrawTool.js'
3+
4+
// 具体业务类,调用工具来辅助实现功能
5+
export class Circle extends RefinedShape {
6+
7+
constructor(drawTool: DrawTool) {
8+
super(drawTool)
9+
}
10+
11+
draw(x: number, y: number, radius: number) {
12+
console.log(`Circle::draw() [x=${x} y=${y} radius=${radius}]`)
13+
// 通过工具类实际绘制
14+
this.drawTool.drawStyle()
15+
}
16+
}

bridge-pattern/ts/src/DrawStyleA.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { DrawTool } from './DrawTool.js'
2+
3+
// 画圆A,实现了图画基础API
4+
export class DrawStyleA implements DrawTool {
5+
drawStyle() {
6+
console.log('DrawStyleA:drawStyle()')
7+
}
8+
}

bridge-pattern/ts/src/DrawStyleB.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { DrawTool } from './DrawTool.js'
2+
3+
// 画圆B,实现了图画基础API
4+
export class DrawStyleB implements DrawTool {
5+
drawStyle() {
6+
console.log('DrawStyeB:drawStyle()')
7+
}
8+
}

bridge-pattern/ts/src/DrawTool.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
// 图形操作基础接口
2+
export interface DrawTool {
3+
drawStyle(): void
4+
}

bridge-pattern/ts/src/RefinedShape.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { Shape } from './Shape.js'
2+
import { DrawTool } from './DrawTool.js'
3+
4+
// 定义新抽象类继承基础抽象类
5+
export class RefinedShape extends Shape {
6+
constructor(drawTool: DrawTool) {
7+
super(drawTool)
8+
}
9+
10+
// 覆盖父类的方法,会被真正的类再覆盖
11+
draw(x: number, y: number, radius: number) {
12+
console.log(`RefinedShape::draw() [x=${x} y=${y} radius=${radius}]`)
13+
}
14+
15+
// 新抽象类里的方法,可作为补充
16+
drawDone() {
17+
console.log(
18+
'RefinedShape::drawDone(), 执行的drawTool是: ' +
19+
this.drawTool.constructor.name
20+
)
21+
}
22+
}

bridge-pattern/ts/src/Shape.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { DrawTool } from './DrawTool.js'
2+
3+
// 定义抽象形状类,关联图形操作接口
4+
export abstract class Shape {
5+
drawTool: DrawTool
6+
constructor(drawTool: DrawTool) {
7+
this.drawTool = drawTool
8+
}
9+
10+
abstract draw(x: number, y: number, radius: number): void
11+
}

bridge-pattern/ts/test/test.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<script type="module">
2+
// module need run in http server
3+
import { test } from './test.js'
4+
alert('pls look console info.' + '\n\r' + test)
5+
</script>

0 commit comments

Comments
 (0)