Skip to content

Commit 9fae469

Browse files
committed
桥接模式
1 parent c59cfcf commit 9fae469

File tree

9 files changed

+127
-0
lines changed

9 files changed

+127
-0
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.anxpp.designpattern.bridge;
2+
//抽象
3+
public abstract class AbstractSave {
4+
ISaveData saveData;
5+
public AbstractSave(ISaveData saveData){
6+
this.saveData = saveData;
7+
}
8+
public abstract void save(Object data);
9+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.anxpp.designpattern.bridge;
2+
//实现
3+
public interface ISaveData {
4+
void save(Object data);
5+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.anxpp.designpattern.bridge;
2+
//细化抽象
3+
public class LocalSave extends AbstractSave{
4+
public LocalSave(ISaveData saveData) {
5+
super(saveData);
6+
}
7+
@Override
8+
public void save(Object data) {
9+
System.out.print("本地存储:");
10+
saveData.save(data);
11+
}
12+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.anxpp.designpattern.bridge;
2+
//细化抽象
3+
public class NetSave extends AbstractSave{
4+
public NetSave(ISaveData saveData) {
5+
super(saveData);
6+
}
7+
@Override
8+
public void save(Object data) {
9+
System.out.print("网络存储:");
10+
saveData.save(data);
11+
}
12+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.anxpp.designpattern.bridge;
2+
//具体实现
3+
public class SaveToDB implements ISaveData{
4+
@Override
5+
public void save(Object data) {
6+
System.out.println(data + " 存储到数据库");
7+
}
8+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.anxpp.designpattern.bridge;
2+
//具体实现
3+
public class SaveToFile implements ISaveData{
4+
@Override
5+
public void save(Object data) {
6+
System.out.println(data + " 存储到文件");
7+
}
8+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package com.anxpp.designpattern.bridge;
2+
//桥接模式
3+
public class SimpleBridge {
4+
public static void main(String args[]){
5+
new LenevoComputer(new Amd()).discribe();
6+
new HaseeComputer(new Intel()).discribe();
7+
}
8+
}
9+
//实现者
10+
interface Cpu{
11+
String discribe();
12+
}
13+
//具体实现者*2
14+
class Amd implements Cpu{
15+
public String discribe() {
16+
return "just so so...";
17+
}
18+
}
19+
class Intel implements Cpu{
20+
public String discribe() {
21+
return "great !";
22+
}
23+
}
24+
//抽象
25+
abstract class AbstractComputer{
26+
Cpu cpu;
27+
public AbstractComputer(Cpu cpu){
28+
this.cpu=cpu;
29+
}
30+
public abstract void discribe();
31+
32+
}
33+
//细化抽象*2
34+
class LenevoComputer extends AbstractComputer{
35+
public LenevoComputer(Cpu cpu) {
36+
super(cpu);
37+
}
38+
@Override
39+
public void discribe() {
40+
System.out.println("联想笔记本cpu:"+super.cpu.discribe());
41+
}
42+
}
43+
class HaseeComputer extends AbstractComputer{
44+
public HaseeComputer(Cpu cpu) {
45+
super(cpu);
46+
}
47+
@Override
48+
public void discribe() {
49+
System.out.println("神舟笔记本cpu:"+super.cpu.discribe());
50+
}
51+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.anxpp.designpattern.bridge;
2+
public class TestUse {
3+
public static void main(String args[]){
4+
Object data = "数据";
5+
ISaveData saveDataDb = new SaveToDB();
6+
ISaveData saveDataFile = new SaveToFile();
7+
AbstractSave save;
8+
save = new NetSave(saveDataDb);
9+
save.save(data);
10+
save = new NetSave(saveDataFile);
11+
save.save(data);
12+
save = new LocalSave(saveDataDb);
13+
save.save(data);
14+
save = new LocalSave(saveDataFile);
15+
save.save(data);
16+
}
17+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
/**
2+
* @author Administrator
3+
* 桥接模式
4+
*/
5+
package com.anxpp.designpattern.bridge;

0 commit comments

Comments
 (0)