Skip to content

Commit b878b13

Browse files
committed
add Adapter and Bridge pattern
1 parent e0baf99 commit b878b13

15 files changed

Lines changed: 219 additions & 0 deletions

Assets/Adapter Pattern.meta

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Adapter Pattern/Structure.meta

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
//-------------------------------------------------------------------------------------
2+
// AdapterStructure.cs
3+
//-------------------------------------------------------------------------------------
4+
5+
using UnityEngine;
6+
using System.Collections;
7+
8+
public class AdapterStructure : MonoBehaviour
9+
{
10+
void Start( )
11+
{
12+
// Create adapter and place a request
13+
Target target = new Adapter();
14+
target.Request();
15+
}
16+
}
17+
18+
/// <summary>
19+
/// The 'Target' class
20+
/// </summary>
21+
class Target
22+
{
23+
public virtual void Request()
24+
{
25+
Debug.Log("Called Target Request()");
26+
}
27+
}
28+
29+
/// <summary>
30+
/// The 'Adapter' class
31+
/// </summary>
32+
class Adapter : Target
33+
{
34+
private Adaptee _adaptee = new Adaptee();
35+
36+
public override void Request()
37+
{
38+
// Possibly do some other work
39+
// and then call SpecificRequest
40+
_adaptee.SpecificRequest();
41+
}
42+
}
43+
44+
/// <summary>
45+
/// The 'Adaptee' class
46+
/// </summary>
47+
class Adaptee
48+
{
49+
public void SpecificRequest()
50+
{
51+
Debug.Log("Called SpecificRequest()");
52+
}
53+
}

Assets/Adapter Pattern/Structure/AdapterStructure.cs.meta

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
12.7 KB
Binary file not shown.

Assets/Adapter Pattern/Structure/TestAdapterStructure.unity.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Bridge Pattern.meta

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Bridge Pattern/Structure.meta

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
//-------------------------------------------------------------------------------------
2+
// BridgeStructure.cs
3+
//-------------------------------------------------------------------------------------
4+
5+
using UnityEngine;
6+
using System.Collections;
7+
8+
public class BridgeStructure : MonoBehaviour
9+
{
10+
void Start ( )
11+
{
12+
Abstraction ab = new RefinedAbstraction();
13+
14+
// Set implementation and call
15+
ab.Implementor = new ConcreteImplementorA();
16+
ab.Operation();
17+
18+
// Change implemention and call
19+
ab.Implementor = new ConcreteImplementorB();
20+
ab.Operation();
21+
}
22+
}
23+
24+
/// <summary>
25+
/// The 'Abstraction' class
26+
/// </summary>
27+
class Abstraction
28+
{
29+
protected Implementor implementor;
30+
31+
// Property
32+
public Implementor Implementor
33+
{
34+
set { implementor = value; }
35+
}
36+
37+
public virtual void Operation()
38+
{
39+
implementor.Operation();
40+
}
41+
}
42+
43+
/// <summary>
44+
/// The 'Implementor' abstract class
45+
/// </summary>
46+
abstract class Implementor
47+
{
48+
public abstract void Operation();
49+
}
50+
51+
/// <summary>
52+
/// The 'RefinedAbstraction' class
53+
/// </summary>
54+
class RefinedAbstraction : Abstraction
55+
{
56+
public override void Operation()
57+
{
58+
implementor.Operation();
59+
}
60+
}
61+
62+
/// <summary>
63+
/// The 'ConcreteImplementorA' class
64+
/// </summary>
65+
class ConcreteImplementorA : Implementor
66+
{
67+
public override void Operation()
68+
{
69+
Debug.Log("ConcreteImplementorA Operation");
70+
}
71+
}
72+
73+
/// <summary>
74+
/// The 'ConcreteImplementorB' class
75+
/// </summary>
76+
class ConcreteImplementorB : Implementor
77+
{
78+
public override void Operation()
79+
{
80+
Debug.Log("ConcreteImplementorB Operation");
81+
}
82+
}

Assets/Bridge Pattern/Structure/BridgeStructure.cs.meta

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)