Strategy Design Pattern

Strategy design pattern provides a family of algorithms. Each algorithm implements a single interface and all the algorithms are interchangeable. Client use the interface of the algorithm and can change the algorithm at runtime. Strategy pattern provides loosely coupling between the client and the algorithms. Structure Participants IStrategy: Defines an...

Continue Reading

Flyweight Design Pattern

Flyweight design pattern supports sharing of objects. In project, sometimes we have similar kinds of objects. Each object have two types of data. Intrinsic: This data is unique in all objects. Extrinsic: This data is common in all objects. Flyweight pattern gives you a pattern to design these objects lightweight by sharing the extrinsic data to an ex...

Continue Reading

Template Method Design Pattern

In Template Method design pattern, we define our specific algorithm in the base class. A algorithm can compose of several methods. At designing the base class, we don't know the implementation of some methods and we mark these methods as abstract so that subclasses can implement these methods. A method in the base class which use abstract methods are cal...

Continue Reading

Visitor Design Pattern

Visitor design pattern allows you to add new behaviors to an existing object without changing the object structure. Visitor pattern separates the non-related behaviors from the object and put them into a separate object. Visitor pattern creates a separate object for each new functionality. This pattern supports both single responsibility and open/close...

Continue Reading

C# using statement - Why and How?

This article is an introduction to the C# using statement and explain why and how to use it. I'll also describe features of using statement and examples of nested using. In C#, every object is using some resources managed or unmanaged internally. Client is responsible for life cycle of the object. Life cycle of the object means creation or destroying the object...

Continue Reading

C# Hashtable

C# Hashtable class is a collection class where we can store data in the key/value pair. Hashtable is not type-safe. Hashtable is not generic and both key and value are based on object type. Hashtable is used to store unique keys data. If we try to assign value to already used key, it just overrides the previous stored data. It is based on the Hashing algorithm&n...

Continue Reading

C# ArrayList

C# ArrayList is a non-generic dynamic size collection class. ArrayList class exists in System.Collections namespace. ArrayList are dynamic means we can add any number of items without specifying the size of it. ArrayList vs Array ArrayList and Array looks same. But there are some major differences between them. Differences are: Array is fixed in size. We specify the...

Continue Reading

C# Generics

Generics are introduced in C# 2.0. It is the most powerful features of C#. In C# 1.0, when we design a class that use other types that is not known at defining the structure of the class, then type should be an object type. In the class, we have to typecast the type using boxing and unboxing and then we can use the type. Generics introduced the concept of type parameters. Wi...

Continue Reading

C# Generic Methods

In my previous post, I explained about Generics. C# also provides Generic Methods. We can create a method which defer the parameter data type until the method is called. These parameters are called Type parameters that means we can pass the actual data type later. Below is the example of Generic Method. static void Swap<T>(ref T input1, ref T input2) { T temp =...

Continue Reading

ref vs out parameters

This post is about difference between ref and out parameters. C# provides three keywords when you defining a method signature. These keywords are: params ref out By default, method arguments are passed by value. That means calling method pass a duplicate copy of data to the called method. If called method modifies the data, it will not visible to calling met...

Continue Reading

Join our newsletter and get an occasional email with a technology and DotNetPattern.com news update.