Skip to main content

Posts

Showing posts with the label Programming

Singleton Pattern : Real Life Example and Java Code Example

Singleton Pattern The Singleton pattern uses to prevent the instantiation of an Object or creating a new one. It is used when We need only one instance in the whole application. The singleton is similar to global variables and we can find many debates over singleton vs global variables on the internet. We can choose between singleton and global variables based on the application context, But global variables violate the encapsulation policy of OOP concepts. Real Life Example: The DataSource is very good example of a singleton pattern. We initialize DataSourcet object by some parameters like host,port,user and password. Every time We need the DataSource, the values of the parameters remains same So We need exactly one instance of DataSource. Java Code Example: There is the various implementation of the singleton, based on the initialization like eager, lazy, static block and thread safe. Below implementation called Bill Pugh Singleton Implementation is simplest and also threa...

Best Way to use ArrayList in Java

                      I n the following post we are goning to discuss a little variation in use of ArrayList in java. We will see how we can improve the performance by just a small change. First of all run the below java code on your machine. import java.util.ArrayList; import java.util.List; public class Test{ public static void main(String... args) { int s = 10000000; String v = "PROGRAMMING"; long t1,t2; //Segment-1 t1 = System.currentTimeMillis(); List<String> l1 = new ArrayList<>(); for(int i=0; i<s; ++i){ l1.add(v); } t2 = System.currentTimeMillis(); System.out.println("Time for above segment-1 : "+(t2-t1)+" ms"); //Segment-2 t1 = System.currentTimeMillis(); List<String> l2 = new ArrayList<>(s); for(int i=0; i<s; ++i){ l2.add(v); } t2 = System.currentTimeMillis(); System.out.println("Time for abo...

Builder Pattern : Java Code Example

Builder Pattern Builder Pattern is used when the increase of object constructor parameter combination leads to an exponential list of constructors. It is a solution to the telescoping constructor anti-pattern. Let's describe the pattern by using a sample requirement. Problem: We need to create a class for a Customer in a Bank and need following attributes in the Customer object. {Name, Father's Name, Date Of Birth, Mobile, Email, PAN, Permanent Address, Correspondence Address, Account, Branch} Constraint : Name,Date Of Birth,Account can not be null or empty There are 10 attributes in the objects So there will be total 2^10(1024) possible constructor and It is not practical to write all required constructors. One alternative could be to use Setter method but it will not work if any attribute has final modifier and would be difficult to fulfill the constraint that some attributes can not be null or empty. Now We will see how Builder Design Pattern helps to solve...

Proxy Pattern : Real Life Example and Java Code Example

Proxy Pattern The proxy pattern defines how to get object level access control by acting as a pass through entity or a placeholder object. There are three types in the proxy pattern. (1) Remote Proxy: Remote proxy represents an object locally which belongs to a different remote location. Real Life Example: ATM is remote proxy for the banks. (2) Virtual Proxy: When an object is complex or heavy, We can use a virtual proxy object as a skeleton representation for the original object. Real Life Example: Bank Cheques are the Virtual Proxy for the Currency Notes. (3) Protection Proxy: When we use a proxy to restrict the access of object it's called Protection proxy. Real Life Example: Proxy servers used in office and organizations to block the access of some websites and networks Java Code Example: Below is the java code example for the ATM Bank Implementation(Remote Proxy). The below code is not very good and secure for sophisticated banking system and...

Volatile Qualifier in C : Explained by Example

                      V olatie qualifier can be used by keyword volatile in C/C++. You can define a variable as volatile by adding volatile qualifier just before data type.eg volatile int a; Volatile specifies a variable whose value may be changed by processes outside the current program. The meaning of outside of the current program may be Operating System or separate thread in case of multi threading processing. When we defines a variable as volatile, It does two things 1) The system always reads the current value of a volatile object from the memory location rather than keeping its value in temporary register at the point it is requested, even if a previous instruction asked for a value from the same object. 2) It stops Compiler to perform some optimizations. As we know that Compiler do some kind of optimizations on the source code before compilation. Below examples e...

Observer Pattern : Real Life Example and Java Code Example

Observer Pattern The observer pattern defines a one to many relation between objects so that when one object changes state, all of its dependent or related objects get notified automatically Real Life Example: Group Chat is a real life example of observer pattern. Whenever someone type some text in text button and hit send button. Every member get notified that someone texted in group. Java Code Example: public interface Subject { void register(Observer observer); void remove(Observer observer); void notifyRespectedObserver(String msg); } public interface Observer { void update(String msg); String write(String msg); String getName(); } public class Console implements Subject { public List memberList; public Console(){ memberList = new LinkedList (); } public void register(Observer observer){ memberList.add(observer); } public void remove(Observer observer){ memberList.remove(observer); } public void notifyRespectedObserver(String msg){ for...

Design Pattern : Real Life Example and Java Code Example

                      I n software engineering, a design pattern is a general reusable solution to a commonly occurring problem within a given context in software design. A design pattern is not a finished design that can be transformed directly into the source or machine code. It is a description or template for how to solve a problem that can be used in many different situations. - Wiki To explore the various kind of Design Patterns follow the below links. ----------------------------------------------------------------------------------------------------------------- Observer Pattern ----------------------------------------------------------------------------------------------------------------- Proxy Pattern ----------------------------------------------------------------------------------------------------------------- Builder Pattern ------------------------...

Some Points About C Programming: Every Programmer Should Know

Some important points in C Programming Here I am writing some points about C programming which I acquired during my learning about programming. These points may help you to get more from the C language, and increase the curiosity to explore it wider. 1) You can not use return keyword in ternary operators(?,:) 2) You can't left the bracket empty of while and for loops like while() and for(); 3) if i=5; then i=i+(6,7,8,2,9); will assign i=5+9;Because of ',' operator association. 4) You can only apply the register specifier to local variables and to the formal parameters in a function. 5) If You declared too many register variables then compiler automatically transforms register variables into non register variables when the limit is reached. 6) You can't obtain the address of a register variable by using the & operator. 7) Register variable only for int and char type.It may support other types(not in Dev-C++5.3.0.4) but significa...

Easiest Method to Read and Write into Files Streams in Competitive Programming

                      T his article is about easiest way to perform read and write operation from file. File handling is one of the most important aspect of programming and it becomes more important when we do competitive programming. Here are some context when you need to deal with files in comptetive programming. 1) Some specific programming contests like Google Code Jam and Facebook Hacker Cup they provide a file for input. You have to read input from that file and write answers into a file and upload on server within limited time. 2) If you are trying to code for a problem. Suppose the problem was that a square matrix is given and you have to rotate the matrix by 90 degree clock-wise. First line of input indicate the total no. of test cases and first line before matrix represents size of matrix. Then input would be like this. 3 5 10 23 43 34 21 11 13 43 30 71 10 23 43 ...