Clients should not be forced to depend upon interfaces that they don't use.The Interface Segregation Principle states that clients should not be forced to implement interfaces they don't use.Instead of one fat interface many small interfaces are preferred based on groups of methods, each one serving one submoduleBefore Interface SegregationExamplepublic interface IProduct { int ID { get; set; } double Weight { get; set; } int Stock { get; set; } int Inseam { get; set; } int WaistSize { get; set; } } public class Jeans : IProduct { public int ID { ... Read More
The Facade pattern is a simple structure laid over a more complex structure.The ParticipantsThe Subsystems are any classes or objects which implement functionality but can be "wrapped" or "covered" by the Facade to simplify an interface.The Facade is the layer of abstraction above the Subsystems, and knows which Subsystem to delegate appropriate work to.The Facade pattern is so general that it applies to almost every major app especially those where I couldn't refactor or modify pieces of said apps for various reasons.Examplepublic class HomeFacade { LightsFacade light; MusicSystemFacade musicSystem; AcFacade ac; public HomeFacade() { ... Read More
Derived types must be completely substitutable for their base types.Definition:We should be able to treat a child class as though it were the parent class. Essentially this means that all derived classes should retain the functionality of their parent class and cannot replace any functionality the parent provides.Before Liskov Substitutionpublic class Ellipse { public double MajorAxis { get; set; } public double MinorAxis { get; set; } public virtual void SetMajorAxis(double majorAxis){ this.MajorAxis = majorAxis; } public virtual void SetMinorAxis(double minorAxis){ this.MajorAxis = minorAxis; } public ... Read More
We are required to write a JavaScript function that takes in a number, say n, as the first argument, and then any number of arguments following that.The idea is to sum all numbers upto n which are divided by any of the numbers specified by second argument and after.For example −If the function is called like this −sumMultiples(15, 2, 3);Then the output should be −const output = 83;Because the numbers are −2, 3, 4, 6, 8, 9, 10, 12, 14, 15ExampleThe code for this will be −const num = 15; const sumMultiple = (num, ...arr) => { const dividesAny ... Read More
The sealed keyword means that the class cannot be inherited from. Declaring constructors private means that instances of the class cannot be created.You can have a base class with a private constructor, but still inherit from that base class, define some public constructors, and effectively instantiate that base class.Constructors are not inherited (so the derived class won't have all private constructors just because the base class does), and that derived classes always call the base class constructors first.Marking the class sealed prevents someone from trivially working around your carefully-constructed singleton class because it keeps someone from inheriting from the class.Examplestatic ... Read More
To get the files, C# provides a method Directory.GetFilesDirectory.GetFiles returns the names of all the files (including their paths) that match the specified search pattern, and optionally searches subdirectories.In the below example * is matches Zero or more characters in that position.SearchOption TopDirectoryOnly. Searches only the top directoriesSearchOption AllDirectories .Searches all the top directories and sub directoriesFileInfo gets the file information like Length, nameExample 1static void Main (string[] args) { string rootPath = @"C:\Users\Koushik\Desktop\TestFolder"; var files = Directory.GetFiles(rootPath, "*.*", SearchOption.AllDirectories); foreach (string file in files) { Console.WriteLine(file); } Console.ReadLine (); }OutputC:\Users\Koushik\Desktop\TestFolder\TestFolderMain\TestFolderMain.txt ... Read More
We are required to write a JavaScript function that takes in a Number as the only input. The function should do one simple thing −keep adding the resultant digits until they converse to a single digit number.For example −const num = 5798;i.e.5 + 7 + 9 + 8 = 29 2 + 9 = 11 1 + 1 = 2Hence, the output should be 2ExampleThe code for this will be −const num = 5798; const sumDigits = (num, sum = 0) => { if(num){ return sumDigits(Math.floor(num / 10), sum + (num % 10)); }; return sum; }; const repeatSum = (num) => { if(num > 9){ return repeatSum(sumDigits(num)); }; return num; }; console.log(repeatSum(num));OutputAnd the output in the console will be −2
We should use an IDisposable design pattern (or Dispose Pattern) when we need to dispose of unmanaged objects.For implementing the IDisposable design pattern, the class which deals with unmanaged objects directly or indirectly should implement the IDisposable interface.And implement the method Dispose declared inside of the IDisposable interface. We do not directly deal with unmanaged objects. But we deal with managed classes, which deals directly with unmanaged objects. For example, File handlers, connection string, HTTP streams, etc.Important aspect of this pattern is that it makes easier for inherited classes to follow the IDisposable design pattern. And it is because of ... Read More
The null object pattern helps us to write a clean code avoiding null checks where ever possible. Using the null object pattern, the callers do not have to care whether they have a null object or a real object. It is not possible to implement null object pattern in every scenario. Sometimes, it is likely to return a null reference and perform some null checks.Examplestatic class Program{ static void Main(string[] args){ Console.ReadLine(); } public static IShape GetMobileByName(string mobileName){ IShape mobile = NullShape.Instance; switch (mobileName){ ... Read More
These are used to import namespaces (or create aliases for namespaces or types).These go at the top of the file, before any declarations.using System; using System.IO; using WinForms = global::System.Windows.Forms; using WinButton = WinForms::Button;The using statement ensures that Dispose() is called even if an exception occurs when you are creating objects and calling methods, properties and so on. Dispose() is a method that is present in the IDisposable interface that helps to implement custom Garbage Collection. In other words, if we are doing some database operation (Insert, Update, Delete) but somehow an exception occurs, then here the using statement closes ... Read More
Data Structure
Networking
RDBMS
Operating System
Java
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP