File tree Expand file tree Collapse file tree 15 files changed +266
-0
lines changed Expand file tree Collapse file tree 15 files changed +266
-0
lines changed Original file line number Diff line number Diff line change
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.
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
1
+ public interface Abstraction {
2
+
3
+ void operation1 ();
4
+ void operation2 ();
5
+ void operation3 ();
6
+ }
You can’t perform that action at this time.
0 commit comments