Skip to main content

Design Patterns

Factory pattern comes into creational design pattern category, the main objective of the creational pattern is to instantiate an object and in Factory Pattern an interface is responsible for creating the object but the sub classes decides which class to instantiate. It is like the interface instantiate the appropriate sub-class depending upon the data passed. Here in this article we will understand how we can create an Factory Pattern in Java.

Suppose here i am giving a good and easy example..
ICommunicator is the core interface

public interface ICommunicator {

public ICommunicator getCommunicator();

public void sayCommunicatorName();

}


public interface IRelianceCommunicator extends ICommunicator{


}


public interface INokiaCommunicator extends ICommunicator{



}

The concrete class NokiaCommunicator and RelianceCommunicator is below

import org.apache.log4j.Logger;

public class NokiaCommunicator implements INokiaCommunicator {
public static final Logger log = Logger.getLogger(NokiaCommunicator.class);

public NokiaCommunicator() {
log.info("Constructor initialized");
}

@Override
public void sayCommunicatorName() {
log.info("I am Nokia Communicator");

}

@Override
public ICommunicator getCommunicator() {
// TODO Auto-generated method stub
return new NokiaCommunicator();
}

}

import org.apache.log4j.Logger;


public class RelianceCommunicator implements IRelianceCommunicator {

public static final Logger log=Logger.getLogger(RelianceCommunicator.class);

public RelianceCommunicator()
{
log.info("Constructor initialized");
}

@Override
public void sayCommunicatorName() {
log.info("I am Reliance Communicator");

}

@Override
public ICommunicator getCommunicator() {
// TODO Auto-generated method stub
return new RelianceCommunicator();
}


}

this is the main method of this program

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;

public class Main {

public static final Logger log = Logger.getLogger(Main.class);

public static void main(String[] args) {
BasicConfigurator.configure();
ICommunicator communicator = new RelianceCommunicator();
communicator.sayCommunicatorName();

communicator= new NokiaCommunicator();
communicator.sayCommunicatorName();

}

}


the output of this program is

0 [main] INFO RelianceCommunicator - Constructor initialized
3 [main] INFO RelianceCommunicator - I am Reliance Communicator
4 [main] INFO NokiaCommunicator - Constructor initialized
4 [main] INFO NokiaCommunicator - I am Nokia Communicator

Comments

Popular posts from this blog

The Bourne Betrayal | Book Review

Novel by Eric Van Lustbader and Robert Ludlum I like all Robert Ludlum’s novels including those which are written by Evan Lastbadder. To me his novels have taken fiction to the next level. During my way back to Hyderabad from my last summer trip to hometown I bought paperback version of “The Bourne Betryal”. This novel was full of Lastbadder’s style of writing than Robert Ludlum’s one.  I took almost 6 months to complete it. This novel has something different to offer actually. Plot is exciting but the story is not very accelerating. Jason bourn and Martin Lindros, When martin Lindros decided to come back in the field operations with the aim to destroy Fadi and When Martin is out the track , Jason is the only help possible in the situation. Story takes you through various struggle of Jason to bring Martin back home. There are few things where author has not even paid any attention for example how does an ordinary Pakistani Waiter will have that much of information   Towa...

Mobile Message Organizer

Got a basic requirement that i think every mobile should have, all the mail clients have this facility and i dont see any big difficulties on this other than the storage problem which is not a problem at all as we got GB of spaces in our memory cards. Well i am talking about the organizing the messages in Inbox , categorization of messages. Suppose i want to store all the messages from one of my friend say A in a folder called Personal, my existing mobile device Nokai E71 doesn't have this feature inbuilt (Ofcourse if you want you can make a folder and move the messages manually but here i am talking about the idea of automating this procedure). Only thing we need to do is , we have to store the rules in separate location , rules will be defined by the user and then device will follow these rules.There are no or very less software available which satisfy this requirement for mobile device.this is so simple but basic requirement as per the end user. I am going to make this one ...

Information Security and Development Skills

From one of my quora answers What jobs in the information security realm require strong development skills? By development skills if you mean application development skills then yes what Andrew Olson  pointed out seems correct, You can use those skills during the static analysis code review. Code review has always been part of security engineering in most of the organizatons. When you come to offensive security you should have strong development skills as you will be developing exploits in order to publish or test the vulnerabilities. Skills that you need at this level are completely differnt from the application development skills which is largely based on Language and thrid part libraries available in the language. Its kind of hard to segregate responsibilities based on the job role but let me try and list some for you Information security engineer (Application Security)  - Code Review(Both manual and automated using the tools), Should have good knowledge of the fr...