Skip to main content

Adapter design pattern

Run the following code in Linqpad:

void Main()
{
	IBowler bowler = new Bowler();
	IBatter allRounder = new AllRounderAdapter(bowler);
	allRounder.Bat();
}

// IBowler and IBatter are incompatible interfaces
internal interface IBowler
{
	void Bowl();
}

internal interface IBatter
{
	void Bat();
}

// Adapter
internal class AllRounderAdapter : IBatter
{
	private IBowler bowler;

	public AllRounderAdapter(IBowler bowler)
	{
		this.bowler = bowler;
	}

	public void Bat()
	{
		Console.WriteLine("Batting...");
	}
}

// Adaptee
internal class Bowler : IBowler
{
	public void Bowl()
	{
		Console.WriteLine("Bowling...");
	}
}
Output:
Batting...

Comments

Popular posts from this blog

How to install/upgrade/downgrade kubectl in Linux (Ubuntu)?

To install the latest version: curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256" echo "$(<kubectl.sha256) kubectl" | sha256sum --check sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl kubectl version --client kubectl version To install a specific (v1.19.0) version: curl -LO "https://dl.k8s.io/release/v1.19.0/bin/linux/amd64/kubectl" curl -LO "https://dl.k8s.io/v1.19.0/bin/linux/amd64/kubectl.sha256" echo "$(<kubectl.sha256) kubectl" | sha256sum --check sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl kubectl version --client kubectl version This will install kubectl client. Run minikube start to install kubectl server.

Application Load Balancer (ALB)

The ALB spans all subnets in a VPC i.e., it is not inside a subnet but VPC. ALB is bound to Target Groups (TGs). TGs are bound to subnets.