Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit e7f4931

Browse filesBrowse files
committed
Bridge Pattern - consequences
1 parent 1464dd4 commit e7f4931
Copy full SHA for e7f4931

File tree

5 files changed

+85
-3
lines changed
Filter options

5 files changed

+85
-3
lines changed

‎README.md

Copy file name to clipboardExpand all lines: README.md
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ Design Patterns in C# / .NET
2222
| | Pattern |
2323
|---|--- |
2424
|:heavy_check_mark:| [Adapter](/StructuralPatterns/Adapter) |
25-
| | Bridge | [Bridge](/StructuralPatterns/Bridge) |
25+
| | [Bridge](/StructuralPatterns/Bridge) |
2626
|:heavy_check_mark: | [Composite](/StructuralPatterns/Composite) |
2727
|:heavy_check_mark:| [Decorator](/StructuralPatterns/Decorator) |
2828
|:heavy_check_mark:| [Facade](/StructuralPatterns/Facade) |
+32Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
7+
namespace StructuralPatterns.Bridge
8+
{
9+
public class BasicRemote : IRemote
10+
{
11+
12+
public void PowerOn()
13+
{
14+
throw new NotImplementedException();
15+
}
16+
17+
public void PowerOff()
18+
{
19+
throw new NotImplementedException();
20+
}
21+
22+
public void VolumeUp()
23+
{
24+
throw new NotImplementedException();
25+
}
26+
27+
public void VolumeDown()
28+
{
29+
throw new NotImplementedException();
30+
}
31+
}
32+
}

‎StructuralPatterns/Bridge/IDevice.cs

Copy file name to clipboard
+16Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
7+
namespace StructuralPatterns.Bridge
8+
{
9+
public interface IDevice
10+
{
11+
void PowerOn();
12+
void PowerOff();
13+
int GetVolumen();
14+
void SetVolume();
15+
}
16+
}

‎StructuralPatterns/Bridge/IRemote.cs

Copy file name to clipboard
+19Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
7+
namespace StructuralPatterns.Bridge
8+
{
9+
// Abstraction
10+
public interface IRemote
11+
{
12+
void PowerOn();
13+
void PowerOff();
14+
void VolumeUp();
15+
void VolumeDown();
16+
}
17+
18+
19+
}

‎StructuralPatterns/Bridge/README.md

Copy file name to clipboardExpand all lines: StructuralPatterns/Bridge/README.md
+17-2Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,20 @@ This enables to configure an `Abstraction`(Interface) with an `Implementor`(Inte
2525

2626
## Benefits
2727

28+
* Decouples an implementation so that it is not bound permanently to an interface.
29+
* Abstraction and implementation can be extended independently.
30+
* Changes to the concrete abstraction classes don't affect the client.
31+
* Allows building platform independent code
32+
* Hides the implementation details from client
2833

2934
## Drawbacks
3035

36+
* Increases overall code complexity by creating multiple additional classes.
37+
38+
## Known Uses
39+
40+
* Useful in graphic and windowing systems that need to run over multiple platforms
41+
* Useful any time you need to vary an interface and an implementation in different ways
3142

3243
## Common Structure
3344

@@ -43,7 +54,11 @@ This enables to configure an `Abstraction`(Interface) with an `Implementor`(Inte
4354
* ConcreteImplementor
4455
* implements the `Implementor` interface.
4556

46-
_[Source: http://www.dofactory.com/net/memento-design-pattern]_
47-
4857
## Example
4958

59+
// TODO
60+
61+
## Comparison with other patterns
62+
63+
* **Adapter** makes the unrelated classes work together. Adapter makes things work after they're designed; Bridge is designed beforehand to let the abstraction and implmentation vary independently. *[GoF, p219]*
64+

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.