Skip to content

Commit 92344df

Browse files
committed
bridge added
1 parent 03f451b commit 92344df

15 files changed

+266
-0
lines changed

bridge/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# bridge
2+
This is repository of http://androidcode.pl blog. It shows uses of Bridge in Android. It is a part of Design Patterns - Bridge post in the blog.

bridge/example/Main.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
public class Main {
2+
3+
public static void main() {
4+
//check conditions and decide
5+
StorageManager storageManager = new LollipopStorageManager();
6+
Writer writer = new DocumentWriter(storageManager);
7+
8+
//do some actions
9+
writer.showDocuments();
10+
writer.openDocumnet("Document1");
11+
writer.closeDocument();
12+
13+
//choosen abstraction has changed
14+
writer = new SheetWriter(storageManager);
15+
//do some actions
16+
}
17+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
public class DocumentWriter implements Writer {
2+
3+
private StorageManager storageManager;
4+
5+
public DocumentWriter(StorageManager storageManager) {
6+
this.storageManager = storageManager;
7+
}
8+
9+
@Override
10+
public void openDocument(String name) {
11+
storageManager.readFile(path);
12+
}
13+
14+
@Override
15+
public void closeDocument() {
16+
//if is save checked then save file
17+
storageManager.writeFile(content);
18+
showEditor(false);
19+
}
20+
21+
@Override
22+
public void createDocument(String name) {
23+
storageManager.writeFile(name, "");
24+
showEditor(true);
25+
}
26+
27+
@Override
28+
public void deleteDocument(String name) {
29+
storageManager.deleteFile(name);
30+
}
31+
32+
@Override
33+
public void showDocuments() {
34+
File[] files = storageManager.readFolder();
35+
//draw files list with specific theme
36+
}
37+
38+
@Override
39+
public void showEditor(boolean isShowed) {
40+
if(isShowed) {
41+
//draw editor with specific theme
42+
}
43+
else {
44+
//just close editor
45+
}
46+
}
47+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
public class SheetWriter implements Writer {
2+
3+
private StorageManager storageManager;
4+
5+
public DocumentWriter(StorageManager storageManager) {
6+
this.storageManager = storageManager;
7+
}
8+
9+
//implements Writer method in similiar way to DocumentWriter
10+
//use own style for editor windows
11+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
public interface Writer {
2+
3+
void openDocument(String name);
4+
void closeDocument();
5+
void createDocument(String name);
6+
void deleteDocument(String name);
7+
void showDocuments();
8+
void showEditor(boolean isShowed);
9+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
public class LollipopStorageManager implements StorageManager {
2+
3+
private String currentFile;
4+
private String folderPath = "/path/to/lollipop/folder"; //get path in specific way
5+
6+
@Override
7+
public void readFile(String name) {
8+
//check READ_EXTERNAL_STORAGE permissions
9+
//if OK, open file
10+
currentFile = name;
11+
//else show permissions dialog
12+
}
13+
14+
@Override
15+
public File[] readFolder() {
16+
//check READ_EXTERNAL_STORAGE permissions
17+
//if OK, return files List
18+
File folder = new File(folderPath);
19+
return folder.listFiles;
20+
//else show permissions dialog
21+
}
22+
23+
@Override
24+
public void writeFile(String name, String content) {
25+
//check WRITE_EXTERNAL_STORAGE permissions
26+
//if OK, write file
27+
//else show permissions dialog
28+
}
29+
30+
@Override
31+
public void writeFile(String content) {
32+
//check WRITE_EXTERNAL_STORAGE permissions
33+
//just write content to current file
34+
//else show permissions dialog
35+
}
36+
37+
@Override
38+
public void deleteFile(String name) {
39+
//check WRITE_EXTERNAL_STORAGE permissions
40+
//if OK, open file
41+
File file = new File(name);
42+
file.delete();
43+
//else show permissions dialog
44+
}
45+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
public interface StorageManager {
2+
3+
void readFile(String name);
4+
File[] readFolder();
5+
void writeFile(String name, String content);
6+
void deleteFile(String name);
7+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
public class UnderLollipopStorageManager implements StorageManager {
2+
3+
private String currentFile;
4+
private String folderPath = "/path/to/underlollipop/folder"; //get path in specific way
5+
6+
@Override
7+
public void readFile(String name) {
8+
//just open file
9+
currentFile = name;
10+
}
11+
12+
@Override
13+
public File[] readFolder(String name) {
14+
File folder = new File(name);
15+
return folder.listFiles;
16+
}
17+
18+
@Override
19+
public void writeFile(String name, String content) {
20+
//just write file with content
21+
}
22+
23+
@Override
24+
public void writeFile(String content) {
25+
//just write content to current file
26+
}
27+
28+
@Override
29+
public void deleteFile(String name) {
30+
File file = new File(name);
31+
file.delete();
32+
}
33+
}

bridge/pattern/Main.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
public class Main {
2+
3+
public static void main() {
4+
//some case to use Implementator1
5+
Abstraction abstraction1 = new Abstraction1(new Implementor1());
6+
abstraction1.operation1(); //runs operation1 from Implementor1
7+
8+
//some case to use Implementator2
9+
Abstraction abstraction2 = new Abstraction2(new Implementor2());
10+
abstraction2.operation2(); //runs operation2 from Implementor2
11+
}
12+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
public interface Abstraction {
2+
3+
void operation1();
4+
void operation2();
5+
void operation3();
6+
}

0 commit comments

Comments
 (0)