Skip to content

Commit

Permalink
add: proxy pattern
Browse files Browse the repository at this point in the history
  • Loading branch information
thutasann committed May 26, 2024
1 parent b8467d7 commit 5742794
Show file tree
Hide file tree
Showing 7 changed files with 65 additions and 1 deletion.
6 changes: 5 additions & 1 deletion design-patterns/Program.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using design_patterns.src.Adapter;
using design_patterns.src.Facade;
using design_patterns.src.Factory;
using design_patterns.src.Proxy;
using design_patterns.src.Singleton;
using design_patterns.src.Singleton.EcommerceSample;

Expand All @@ -17,4 +18,7 @@
FacadeUsage.SampleOne();

Console.WriteLine("\n---------------- Adapter Pattern 🚀");
AdapterUsage.SampleOne();
AdapterUsage.SampleOne();

Console.WriteLine("\n---------------- Proxy Pattern 🚀");
ProxyUsage.SampleOne();
5 changes: 5 additions & 0 deletions design-patterns/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,14 @@ In this section, Design patterns in c# will be included.

![Adapter Pattern](./docs/adapter.png)

### Proxy Pattern

![Proxy Pattern](./docs/proxy.png)

## Resources

- https://www.c-sharpcorner.com/UploadFile/8911c4/singleton-design-pattern-in-C-Sharp/
- https://www.c-sharpcorner.com/article/factory-design-pattern-in-c-sharp/
- https://www.c-sharpcorner.com/article/facade-design-pattern-using-c-sharp/
- https://www.c-sharpcorner.com/UploadFile/efa3cf/adapter-design-pattern-in-C-Sharp/
- https://www.c-sharpcorner.com/UploadFile/b1df45/proxy-design-pattern-using-C-Sharp/
Binary file added design-patterns/docs/proxy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 7 additions & 0 deletions design-patterns/src/Proxy/ISuperSecretDatabase.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace design_patterns.src.Proxy
{
public interface ISuperSecretDatabase
{
void DisplayDatabaseName();
}
}
12 changes: 12 additions & 0 deletions design-patterns/src/Proxy/ProxyUsage.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
namespace design_patterns.src.Proxy
{
public static class ProxyUsage
{
public static void SampleOne()
{
Console.WriteLine("\nProxy Usage Sample One : ");
ISuperSecretDatabase superSecretDatabase = new SuperSecretDatabaseProxy("test_db", "Password");
superSecretDatabase.DisplayDatabaseName();
}
}
}
15 changes: 15 additions & 0 deletions design-patterns/src/Proxy/SuperSecretDatabase.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
namespace design_patterns.src.Proxy
{
/// <summary>
/// Super Secret Database
/// </summary>
public class SuperSecretDatabase(string databaseName) : ISuperSecretDatabase
{
private readonly string _databaseName = databaseName;

public void DisplayDatabaseName()
{
Console.WriteLine("Display database name : " + _databaseName);
}
}
}
21 changes: 21 additions & 0 deletions design-patterns/src/Proxy/SuperSecretDatabaseProxy.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
namespace design_patterns.src.Proxy
{
public class SuperSecretDatabaseProxy(string databaseName, string password) : ISuperSecretDatabase
{
private SuperSecretDatabase? superSecretDatabase;
private readonly string databaseName = databaseName;
private readonly string password = password;

public void DisplayDatabaseName()
{
if (password.Equals("Password"))
{
if (superSecretDatabase == null)
{
superSecretDatabase = new(databaseName);
}
superSecretDatabase!.DisplayDatabaseName();
}
}
}
}

0 comments on commit 5742794

Please sign in to comment.