RSS Feed for This PostCurrent Article

Design Pattern in Java 101 – Visitor Pattern (Behavioral Pattern)

Download Source Code

NOTE: This is written for me to recap and relearn what I learnt before….

This article is written in order for me to recap what I have learnt and used before, though I know there are already many sites which talked about all these.

Visitor Pattern defines a new operation to deal with the classes of the elements without changing their structures.

E.g.,

Create a IProcess interface,

public interface IProcessor {
    public void process(IMessage message);
}

IProcessor accepts IMessage as the parameter.

Create a IMessage interface,

public interface IMessage {
    public String parse();
}

Create a MessageProcessor class which implements IProcessor

public class MessageProcessor implements IProcessor{

    private String messageType;

    public void process(IMessage message) {
        messageType = message.parse();
    }

    public String toString() {
        return "Processor for " + messageType ;
    }
}

Create SMSMessage and MMSMessage class which implement IMessage

public class SMSMessage implements IMessage {

    public String parse() {
        return "SMS Message";
    }
}
public class MMSMessage implements IMessage {

    public String parse() {
        return "MMS Message";
    }
}

You can create another message processor depending on your need.

public class AnotherMessageProcessor {
    private String messageType;

    public void process(IMessage message) {
        messageType = message.parse();
    }

    public String toString() {
        return "Another Processor for " + messageType;
    }
}

To test it, use the following code stub


public class TestPattern {

    public static void main(String[] args) {
        MMSMessage mmsMessage = new MMSMessage();
        SMSMessage smsMessage = new SMSMessage();

        MessageProcessor messageProcessor = new MessageProcessor();
        AnotherMessageProcessor
                   anotherMessageProcessor =
                                   new AnotherMessageProcessor();

        messageProcessor.process(mmsMessage);
        System.out.println(messageProcessor.toString());

        messageProcessor.process(smsMessage);
        System.out.println(messageProcessor.toString());

        anotherMessageProcessor.process(mmsMessage);
        System.out.println(anotherMessageProcessor.toString());

        anotherMessageProcessor.process(smsMessage);
        System.out.println(anotherMessageProcessor.toString());
    }
}

The output

Processor for MMS Message
Processor for SMS Message
Another Processor for MMS Message
Another Processor for SMS Message

Popularity: 3% [?]


Trackback URL


RSS Feed for This Post1 Comment(s)

  1. Erin Klein | Apr 19, 2008 | Reply

    papacy accoladed blaff unmoving damagement bescent aboriginal selfsameness
    Diesel Spares India
    http://www.whisperingspiritsartgallery.com/

RSS Feed for This PostPost a Comment