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

AWS Route53 - Private Hosted Zone

AWS - Error - An error occurred (ExpiredToken) when calling the DescribeStacks operation: The security token included in the request is expired

Error:   An error occurred (ExpiredToken) when calling the DescribeStacks operation: The security token included in the request is expired. Reason: It occurred when I ran a MAKE command with a profile having expired token (security credentials) Fix: Generate new security credentials (aws sts assume-role) and run the command again

High availability (Multi-AZ) for Amazon RDS

There is something called failover technology in Amazon. AWS RDS's Multi-AZ deployment uses this technology. If you enable Multi-AZ for an RDS DB, say MySQL DB, RDS automatically creates a standby replica in a different AZ. If the primary DB instance is in AZ-1A, then RDS creates a standby replica in AZ-1B (for example). Suppose I add a new row to a table in the primary DB, then the same row is added, almost in the same time, in the standby replica. This is called as synchronous replication . Thus, standby replicas are useful during DB instance failure/ AZ disruption . How? Because, there is no need to create a backup later because the backup has already been created. This gives high availability during planned system maintenance. Normal backup  operation - I/O activities are blocked in the primary database  Automated backup operation (standby replica) - I/O activities are not blocked This standby replica is not similar to read replica (which is used for disaster recovery). S...