<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Beacon</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Beacon"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Beacon"/>
	<updated>2026-06-10T12:38:52Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28874</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28874"/>
		<updated>2009-11-18T23:41:02Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* Applicants of Factory Pattern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.It Provide an interface for creating families of related or dependent objects without specifying their concrete classes.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This topic deals with the Factory method design pattern.It explains Factory design pattern and compares with other creational pattern to highlight the uniqueness and distinguishing features of the pattern.It also gives examples of where factory design pattern is used and scenarios wherein its more suitable than other creational patterns.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Factory Patterns Insight ===&lt;br /&gt;
&lt;br /&gt;
The essence of a pattern is a reusable solution for a recurring problem.The type of object needed depends on the contents of the external data or event. It defines an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.It means that Creator class is written without knowing what actual ConcreteProduct class will be instantiated. The ConcreteProduct class which is instantiated is determined solely by which ConcreteCreator subclass is instantiated and used by the application.&lt;br /&gt;
&lt;br /&gt;
[[Image:facuml.jpg]]&lt;br /&gt;
&lt;br /&gt;
Benefits&lt;br /&gt;
Code is made more flexible and reusable by the elimination of instantiation of application-specific classes,Code deals only with the interface of the Factory class and can work with any sub class that supports this interface&lt;br /&gt;
&lt;br /&gt;
=== Applicants of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
Use the Factory Method pattern in any of the following situations:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;A class can't anticipate the class of objects it must create&lt;br /&gt;
&amp;lt;br&amp;gt;A class wants its subclasses to specify the objects it creates&lt;br /&gt;
&amp;lt;br&amp;gt;Classes delegate responsibility to one of several helper subclasses, and you want to localize the knowledge of which helper subclasses is the delegate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sometimes, you need to create an object to represent external data or process an external event. The type of object needed depends on the contents of the external data or event. You don’t want the source of the data or event nor object’s clients to need to be aware of the actual type of object created. You accomplish that by encapsulating the decision of the class of object to create in its own class.This is when factory method design can be put in to to best use.&lt;br /&gt;
&lt;br /&gt;
=== Examples of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
Factory design pattern can be explained by the following example. This example involves factory class called Mammals and it involves calling objects cat and dog with out actually creating an object for cat and dog class.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 public class MammalsFactory {&lt;br /&gt;
    public static Mammals getMammalObject(String name) {&lt;br /&gt;
       if (name.equalsIgnoreCase(&amp;quot;Cat&amp;quot;)){&lt;br /&gt;
          return new Cat();&lt;br /&gt;
       } else {&lt;br /&gt;
          return new Dog();&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Here we will be passing an argument to the getMammalObject function based on the argument passed we return the Mammals object of the class.&lt;br /&gt;
&lt;br /&gt;
Abstract class is created so that dog ans cat can implement this class&lt;br /&gt;
&lt;br /&gt;
 public abstract class Mammals {&lt;br /&gt;
       public abstract String doWalking();&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The cat and dog class can be created to implement the abstract class as follows&lt;br /&gt;
&lt;br /&gt;
 public class Cat extends Mammals {&lt;br /&gt;
 public String doWalking() {&lt;br /&gt;
 return &amp;quot;Cats has been Informed to perform Walk Operation&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Dog class&lt;br /&gt;
&lt;br /&gt;
 public class Dog extends Mammals {&lt;br /&gt;
 public String doWalking() {&lt;br /&gt;
 return &amp;quot;Dogs has been Informed to perform Walk Operation&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Now without creating object for dog and cat but we are instantiating the object for Mammals Factory class.&lt;br /&gt;
&lt;br /&gt;
 public class FactoryClient {&lt;br /&gt;
   public static void main(String args[]) {&lt;br /&gt;
       MammalsFactory mf = new MammalsFactory();&lt;br /&gt;
       System.out.println(mf.getMammalObject(&amp;quot;Dog&amp;quot;).doWalking());&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Builder Pattern ===&lt;br /&gt;
In Factory pattern, the factory is in charge of creating various subtypes of an object depending on the needs.&lt;br /&gt;
 &lt;br /&gt;
Where as in Builder pattern, the composition of the objects might differ within the same subclass.&lt;br /&gt;
&lt;br /&gt;
An example of a Factory method CarCreate might return a Audi or a Toyota where as in the same scenario if we are using a Builder pattern, it allows us to create objects with finer granularity like specifying different engine specifications (a 4 cylinder engine or a 6 cylinder engine)for the objects.&lt;br /&gt;
As seen from the above example the Factory pattern is a simpler version of the Builder Pattern.&lt;br /&gt;
&lt;br /&gt;
UML diagram of Builder Pattern&lt;br /&gt;
&lt;br /&gt;
[[Image:Builder2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Prototype Pattern ===&lt;br /&gt;
The Prototype pattern creates a new object by cloning an existing object. The client using the prototype object does not need to know what kind of object it is dealing with as long as the concrete prototype extends or implements the prototype interface/class. The concrete prototype object is responsible for cloning itself and returning the cloned object.&lt;br /&gt;
The pattern enables a client to create the kind of object required at runtime by selecting the appropriate prototype. The prototype classes are created generically by the client without the client knowing the exact type of the concrete prototype. New concrete prototypes can be added at runtime as long as they conform to the abstract prototype.&lt;br /&gt;
&lt;br /&gt;
[[Image:prototype.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Abstract Factory Pattern ===&lt;br /&gt;
Abstract pattern is one level of abstraction higher than the factory pattern.&lt;br /&gt;
A Factory pattern is one that returns an instance of one of several possible classes depending on the data provided to it.&lt;br /&gt;
Usually all of the classes it returns have a common parent class and common methods, but each of them performs a task differently and is optimized for different kinds of data.&lt;br /&gt;
&lt;br /&gt;
There are several similar variations on the factory pattern:&lt;br /&gt;
  1. The base class is abstract and the pattern must return a complete working class. &lt;br /&gt;
  2. The base class contains default methods and is only sub-classed for cases where the default methods are insufficient.&lt;br /&gt;
  3. Parameters are passed to the factory telling it which of several class types to return. In this case the classes may share&lt;br /&gt;
     the same method names but may do something quite different.&lt;br /&gt;
&lt;br /&gt;
[[Image:abstractfactory.gif]]&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Factory Design Pattern [http://en.wikipedia.org/wiki/Factory_method_pattern] &amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt; Abstract Factory Method[http://www.apwebco.com/gofpatterns/creational/AbstractFactory.html] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Factory v/s Abstract Factory Pattern[http://www.coderanch.com/t/99780/OO-Patterns-UML-Refactoring/Factory-Vs-Abstract-Factory-Pattern] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Builder Design Pattern v/s Factory Design Pattern[http://stackoverflow.com/questions/757743/what-is-the-difference-between-builder-design-pattern-and-factory-design-pattern]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Abstract Factory Method [http://userpages.umbc.edu/~tarr/dp/lectures/Factory.pdf]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; UML Diagram of Builder Pattern [http://en.wikipedia.org/wiki/Builder_pattern]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; UML Diagram of Prototype Design Pattern [http://www.apwebco.com/gofpatterns/creational/Prototype.html] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; UML Diagram of Abstract Factory Design Pattern [http://www.apwebco.com/gofpatterns/creational/AbstractFactory.html] &amp;lt;/li&amp;gt;&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28873</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28873"/>
		<updated>2009-11-18T23:40:46Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* Applicants of Factory Pattern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.It Provide an interface for creating families of related or dependent objects without specifying their concrete classes.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This topic deals with the Factory method design pattern.It explains Factory design pattern and compares with other creational pattern to highlight the uniqueness and distinguishing features of the pattern.It also gives examples of where factory design pattern is used and scenarios wherein its more suitable than other creational patterns.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Factory Patterns Insight ===&lt;br /&gt;
&lt;br /&gt;
The essence of a pattern is a reusable solution for a recurring problem.The type of object needed depends on the contents of the external data or event. It defines an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.It means that Creator class is written without knowing what actual ConcreteProduct class will be instantiated. The ConcreteProduct class which is instantiated is determined solely by which ConcreteCreator subclass is instantiated and used by the application.&lt;br /&gt;
&lt;br /&gt;
[[Image:facuml.jpg]]&lt;br /&gt;
&lt;br /&gt;
Benefits&lt;br /&gt;
Code is made more flexible and reusable by the elimination of instantiation of application-specific classes,Code deals only with the interface of the Factory class and can work with any sub class that supports this interface&lt;br /&gt;
&lt;br /&gt;
=== Applicants of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
Use the Factory Method pattern in any of the following situations:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;A class can't anticipate the class of objects it must create&lt;br /&gt;
&amp;lt;br&amp;gt;A class wants its subclasses to specify the objects it creates&lt;br /&gt;
&amp;lt;br&amp;gt;Classes delegate responsibility to one of several helper subclasses, and you want to localize the knowledge of which helper subclasses is the delegate.&lt;br /&gt;
&lt;br /&gt;
Sometimes, you need to create an object to represent external data or process an external event. The type of object needed depends on the contents of the external data or event. You don’t want the source of the data or event nor object’s clients to need to be aware of the actual type of object created. You accomplish that by encapsulating the decision of the class of object to create in its own class.This is when factory method design can be put in to to best use.&lt;br /&gt;
&lt;br /&gt;
=== Examples of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
Factory design pattern can be explained by the following example. This example involves factory class called Mammals and it involves calling objects cat and dog with out actually creating an object for cat and dog class.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 public class MammalsFactory {&lt;br /&gt;
    public static Mammals getMammalObject(String name) {&lt;br /&gt;
       if (name.equalsIgnoreCase(&amp;quot;Cat&amp;quot;)){&lt;br /&gt;
          return new Cat();&lt;br /&gt;
       } else {&lt;br /&gt;
          return new Dog();&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Here we will be passing an argument to the getMammalObject function based on the argument passed we return the Mammals object of the class.&lt;br /&gt;
&lt;br /&gt;
Abstract class is created so that dog ans cat can implement this class&lt;br /&gt;
&lt;br /&gt;
 public abstract class Mammals {&lt;br /&gt;
       public abstract String doWalking();&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The cat and dog class can be created to implement the abstract class as follows&lt;br /&gt;
&lt;br /&gt;
 public class Cat extends Mammals {&lt;br /&gt;
 public String doWalking() {&lt;br /&gt;
 return &amp;quot;Cats has been Informed to perform Walk Operation&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Dog class&lt;br /&gt;
&lt;br /&gt;
 public class Dog extends Mammals {&lt;br /&gt;
 public String doWalking() {&lt;br /&gt;
 return &amp;quot;Dogs has been Informed to perform Walk Operation&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Now without creating object for dog and cat but we are instantiating the object for Mammals Factory class.&lt;br /&gt;
&lt;br /&gt;
 public class FactoryClient {&lt;br /&gt;
   public static void main(String args[]) {&lt;br /&gt;
       MammalsFactory mf = new MammalsFactory();&lt;br /&gt;
       System.out.println(mf.getMammalObject(&amp;quot;Dog&amp;quot;).doWalking());&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Builder Pattern ===&lt;br /&gt;
In Factory pattern, the factory is in charge of creating various subtypes of an object depending on the needs.&lt;br /&gt;
 &lt;br /&gt;
Where as in Builder pattern, the composition of the objects might differ within the same subclass.&lt;br /&gt;
&lt;br /&gt;
An example of a Factory method CarCreate might return a Audi or a Toyota where as in the same scenario if we are using a Builder pattern, it allows us to create objects with finer granularity like specifying different engine specifications (a 4 cylinder engine or a 6 cylinder engine)for the objects.&lt;br /&gt;
As seen from the above example the Factory pattern is a simpler version of the Builder Pattern.&lt;br /&gt;
&lt;br /&gt;
UML diagram of Builder Pattern&lt;br /&gt;
&lt;br /&gt;
[[Image:Builder2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Prototype Pattern ===&lt;br /&gt;
The Prototype pattern creates a new object by cloning an existing object. The client using the prototype object does not need to know what kind of object it is dealing with as long as the concrete prototype extends or implements the prototype interface/class. The concrete prototype object is responsible for cloning itself and returning the cloned object.&lt;br /&gt;
The pattern enables a client to create the kind of object required at runtime by selecting the appropriate prototype. The prototype classes are created generically by the client without the client knowing the exact type of the concrete prototype. New concrete prototypes can be added at runtime as long as they conform to the abstract prototype.&lt;br /&gt;
&lt;br /&gt;
[[Image:prototype.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Abstract Factory Pattern ===&lt;br /&gt;
Abstract pattern is one level of abstraction higher than the factory pattern.&lt;br /&gt;
A Factory pattern is one that returns an instance of one of several possible classes depending on the data provided to it.&lt;br /&gt;
Usually all of the classes it returns have a common parent class and common methods, but each of them performs a task differently and is optimized for different kinds of data.&lt;br /&gt;
&lt;br /&gt;
There are several similar variations on the factory pattern:&lt;br /&gt;
  1. The base class is abstract and the pattern must return a complete working class. &lt;br /&gt;
  2. The base class contains default methods and is only sub-classed for cases where the default methods are insufficient.&lt;br /&gt;
  3. Parameters are passed to the factory telling it which of several class types to return. In this case the classes may share&lt;br /&gt;
     the same method names but may do something quite different.&lt;br /&gt;
&lt;br /&gt;
[[Image:abstractfactory.gif]]&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Factory Design Pattern [http://en.wikipedia.org/wiki/Factory_method_pattern] &amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt; Abstract Factory Method[http://www.apwebco.com/gofpatterns/creational/AbstractFactory.html] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Factory v/s Abstract Factory Pattern[http://www.coderanch.com/t/99780/OO-Patterns-UML-Refactoring/Factory-Vs-Abstract-Factory-Pattern] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Builder Design Pattern v/s Factory Design Pattern[http://stackoverflow.com/questions/757743/what-is-the-difference-between-builder-design-pattern-and-factory-design-pattern]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Abstract Factory Method [http://userpages.umbc.edu/~tarr/dp/lectures/Factory.pdf]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; UML Diagram of Builder Pattern [http://en.wikipedia.org/wiki/Builder_pattern]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; UML Diagram of Prototype Design Pattern [http://www.apwebco.com/gofpatterns/creational/Prototype.html] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; UML Diagram of Abstract Factory Design Pattern [http://www.apwebco.com/gofpatterns/creational/AbstractFactory.html] &amp;lt;/li&amp;gt;&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28855</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28855"/>
		<updated>2009-11-18T23:26:20Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* Factory Patterns Insight */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.It Provide an interface for creating families of related or dependent objects without specifying their concrete classes.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This topic deals with the Factory method design pattern.It explains Factory design pattern and compares with other creational pattern to highlight the uniqueness and distinguishing features of the pattern.It also gives examples of where factory design pattern is used and scenarios wherein its more suitable than other creational patterns.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Factory Patterns Insight ===&lt;br /&gt;
&lt;br /&gt;
The essence of a pattern is a reusable solution for a recurring problem.The type of object needed depends on the contents of the external data or event. It defines an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.It means that Creator class is written without knowing what actual ConcreteProduct class will be instantiated. The ConcreteProduct class which is instantiated is determined solely by which ConcreteCreator subclass is instantiated and used by the application.&lt;br /&gt;
&lt;br /&gt;
[[Image:facuml.jpg]]&lt;br /&gt;
&lt;br /&gt;
Benefits&lt;br /&gt;
Code is made more flexible and reusable by the elimination of instantiation of application-specific classes,Code deals only with the interface of the Factory class and can work with any sub class that supports this interface&lt;br /&gt;
&lt;br /&gt;
=== Applicants of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
Use the Factory Method pattern in any of the following situations:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;A class can't anticipate the class of objects it must create&lt;br /&gt;
&amp;lt;br&amp;gt;A class wants its subclasses to specify the objects it creates&lt;br /&gt;
&amp;lt;br&amp;gt;Classes delegate responsibility to one of several helper subclasses, and you want to localize the knowledge of which helper subclasses is the delegate.&lt;br /&gt;
&lt;br /&gt;
=== Examples of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
Factory design pattern can be explained by the following example. This example involves factory class called Mammals and it involves calling objects cat and dog with out actually creating an object for cat and dog class.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 public class MammalsFactory {&lt;br /&gt;
    public static Mammals getMammalObject(String name) {&lt;br /&gt;
       if (name.equalsIgnoreCase(&amp;quot;Cat&amp;quot;)){&lt;br /&gt;
          return new Cat();&lt;br /&gt;
       } else {&lt;br /&gt;
          return new Dog();&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Here we will be passing an argument to the getMammalObject function based on the argument passed we return the Mammals object of the class.&lt;br /&gt;
&lt;br /&gt;
Abstract class is created so that dog ans cat can implement this class&lt;br /&gt;
&lt;br /&gt;
 public abstract class Mammals {&lt;br /&gt;
       public abstract String doWalking();&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The cat and dog class can be created to implement the abstract class as follows&lt;br /&gt;
&lt;br /&gt;
 public class Cat extends Mammals {&lt;br /&gt;
 public String doWalking() {&lt;br /&gt;
 return &amp;quot;Cats has been Informed to perform Walk Operation&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Dog class&lt;br /&gt;
&lt;br /&gt;
 public class Dog extends Mammals {&lt;br /&gt;
 public String doWalking() {&lt;br /&gt;
 return &amp;quot;Dogs has been Informed to perform Walk Operation&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Now without creating object for dog and cat but we are instantiating the object for Mammals Factory class.&lt;br /&gt;
&lt;br /&gt;
 public class FactoryClient {&lt;br /&gt;
   public static void main(String args[]) {&lt;br /&gt;
       MammalsFactory mf = new MammalsFactory();&lt;br /&gt;
       System.out.println(mf.getMammalObject(&amp;quot;Dog&amp;quot;).doWalking());&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Builder Pattern ===&lt;br /&gt;
In Factory pattern, the factory is in charge of creating various subtypes of an object depending on the needs.&lt;br /&gt;
 &lt;br /&gt;
Where as in Builder pattern, the composition of the objects might differ within the same subclass.&lt;br /&gt;
&lt;br /&gt;
An example of a Factory method CarCreate might return a Audi or a Toyota where as in the same scenario if we are using a Builder pattern, it allows us to create objects with finer granularity like specifying different engine specifications (a 4 cylinder engine or a 6 cylinder engine)for the objects.&lt;br /&gt;
As seen from the above example the Factory pattern is a simpler version of the Builder Pattern.&lt;br /&gt;
&lt;br /&gt;
UML diagram of Builder Pattern&lt;br /&gt;
&lt;br /&gt;
[[Image:Builder2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Prototype Pattern ===&lt;br /&gt;
The Prototype pattern creates a new object by cloning an existing object. The client using the prototype object does not need to know what kind of object it is dealing with as long as the concrete prototype extends or implements the prototype interface/class. The concrete prototype object is responsible for cloning itself and returning the cloned object.&lt;br /&gt;
The pattern enables a client to create the kind of object required at runtime by selecting the appropriate prototype. The prototype classes are created generically by the client without the client knowing the exact type of the concrete prototype. New concrete prototypes can be added at runtime as long as they conform to the abstract prototype.&lt;br /&gt;
&lt;br /&gt;
[[Image:prototype.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Abstract Factory Pattern ===&lt;br /&gt;
Abstract pattern is one level of abstraction higher than the factory pattern.&lt;br /&gt;
A Factory pattern is one that returns an instance of one of several possible classes depending on the data provided to it.&lt;br /&gt;
Usually all of the classes it returns have a common parent class and common methods, but each of them performs a task differently and is optimized for different kinds of data.&lt;br /&gt;
&lt;br /&gt;
There are several similar variations on the factory pattern:&lt;br /&gt;
  1. The base class is abstract and the pattern must return a complete working class. &lt;br /&gt;
  2. The base class contains default methods and is only sub-classed for cases where the default methods are insufficient.&lt;br /&gt;
  3. Parameters are passed to the factory telling it which of several class types to return. In this case the classes may share&lt;br /&gt;
     the same method names but may do something quite different.&lt;br /&gt;
&lt;br /&gt;
[[Image:abstractfactory.gif]]&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Factory Design Pattern [http://en.wikipedia.org/wiki/Factory_method_pattern] &amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt; Abstract Factory Method[http://www.apwebco.com/gofpatterns/creational/AbstractFactory.html] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Factory v/s Abstract Factory Pattern[http://www.coderanch.com/t/99780/OO-Patterns-UML-Refactoring/Factory-Vs-Abstract-Factory-Pattern] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Builder Design Pattern v/s Factory Design Pattern[http://stackoverflow.com/questions/757743/what-is-the-difference-between-builder-design-pattern-and-factory-design-pattern]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Abstract Factory Method [http://userpages.umbc.edu/~tarr/dp/lectures/Factory.pdf]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; UML Diagram of Builder Pattern [http://en.wikipedia.org/wiki/Builder_pattern]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; UML Diagram of Prototype Design Pattern [http://www.apwebco.com/gofpatterns/creational/Prototype.html] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; UML Diagram of Abstract Factory Design Pattern [http://www.apwebco.com/gofpatterns/creational/AbstractFactory.html] &amp;lt;/li&amp;gt;&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28841</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28841"/>
		<updated>2009-11-18T23:20:37Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* Applicants of Factory Pattern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.It Provide an interface for creating families of related or dependent objects without specifying their concrete classes.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This topic deals with the Factory method design pattern.It explains Factory design pattern and compares with other creational pattern to highlight the uniqueness and distinguishing features of the pattern.It also gives examples of where factory design pattern is used and scenarios wherein its more suitable than other creational patterns.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Factory Patterns Insight ===&lt;br /&gt;
&lt;br /&gt;
Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.It means that Creator class is written without knowing what actual ConcreteProduct class will be instantiated. The ConcreteProduct class which is instantiated is determined solely by which ConcreteCreator subclass is instantiated and used by the application.&lt;br /&gt;
&lt;br /&gt;
[[Image:facuml.jpg]]&lt;br /&gt;
&lt;br /&gt;
Benefits&lt;br /&gt;
Code is made more flexible and reusable by the elimination of instantiation of application-specific classes,Code deals only with the interface of the Factory class and can work with any sub class that supports this interface&lt;br /&gt;
&lt;br /&gt;
=== Applicants of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
Use the Factory Method pattern in any of the following situations:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;A class can't anticipate the class of objects it must create&lt;br /&gt;
&amp;lt;br&amp;gt;A class wants its subclasses to specify the objects it creates&lt;br /&gt;
&amp;lt;br&amp;gt;Classes delegate responsibility to one of several helper subclasses, and you want to localize the knowledge of which helper subclasses is the delegate.&lt;br /&gt;
&lt;br /&gt;
=== Examples of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
Factory design pattern can be explained by the following example. This example involves factory class called Mammals and it involves calling objects cat and dog with out actually creating an object for cat and dog class.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 public class MammalsFactory {&lt;br /&gt;
    public static Mammals getMammalObject(String name) {&lt;br /&gt;
       if (name.equalsIgnoreCase(&amp;quot;Cat&amp;quot;)){&lt;br /&gt;
          return new Cat();&lt;br /&gt;
       } else {&lt;br /&gt;
          return new Dog();&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Here we will be passing an argument to the getMammalObject function based on the argument passed we return the Mammals object of the class.&lt;br /&gt;
&lt;br /&gt;
Abstract class is created so that dog ans cat can implement this class&lt;br /&gt;
&lt;br /&gt;
 public abstract class Mammals {&lt;br /&gt;
       public abstract String doWalking();&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The cat and dog class can be created to implement the abstract class as follows&lt;br /&gt;
&lt;br /&gt;
 public class Cat extends Mammals {&lt;br /&gt;
 public String doWalking() {&lt;br /&gt;
 return &amp;quot;Cats has been Informed to perform Walk Operation&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Dog class&lt;br /&gt;
&lt;br /&gt;
 public class Dog extends Mammals {&lt;br /&gt;
 public String doWalking() {&lt;br /&gt;
 return &amp;quot;Dogs has been Informed to perform Walk Operation&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Now without creating object for dog and cat but we are instantiating the object for Mammals Factory class.&lt;br /&gt;
&lt;br /&gt;
 public class FactoryClient {&lt;br /&gt;
   public static void main(String args[]) {&lt;br /&gt;
       MammalsFactory mf = new MammalsFactory();&lt;br /&gt;
       System.out.println(mf.getMammalObject(&amp;quot;Dog&amp;quot;).doWalking());&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Builder Pattern ===&lt;br /&gt;
In Factory pattern, the factory is in charge of creating various subtypes of an object depending on the needs.&lt;br /&gt;
 &lt;br /&gt;
Where as in Builder pattern, the composition of the objects might differ within the same subclass.&lt;br /&gt;
&lt;br /&gt;
An example of a Factory method CarCreate might return a Audi or a Toyota where as in the same scenario if we are using a Builder pattern, it allows us to create objects with finer granularity like specifying different engine specifications (a 4 cylinder engine or a 6 cylinder engine)for the objects.&lt;br /&gt;
As seen from the above example the Factory pattern is a simpler version of the Builder Pattern.&lt;br /&gt;
&lt;br /&gt;
UML diagram of Builder Pattern&lt;br /&gt;
&lt;br /&gt;
[[Image:Builder2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Prototype Pattern ===&lt;br /&gt;
The Prototype pattern creates a new object by cloning an existing object. The client using the prototype object does not need to know what kind of object it is dealing with as long as the concrete prototype extends or implements the prototype interface/class. The concrete prototype object is responsible for cloning itself and returning the cloned object.&lt;br /&gt;
The pattern enables a client to create the kind of object required at runtime by selecting the appropriate prototype. The prototype classes are created generically by the client without the client knowing the exact type of the concrete prototype. New concrete prototypes can be added at runtime as long as they conform to the abstract prototype.&lt;br /&gt;
&lt;br /&gt;
[[Image:prototype.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Abstract Factory Pattern ===&lt;br /&gt;
Abstract pattern is one level of abstraction higher than the factory pattern.&lt;br /&gt;
A Factory pattern is one that returns an instance of one of several possible classes depending on the data provided to it.&lt;br /&gt;
Usually all of the classes it returns have a common parent class and common methods, but each of them performs a task differently and is optimized for different kinds of data.&lt;br /&gt;
&lt;br /&gt;
There are several similar variations on the factory pattern:&lt;br /&gt;
  1. The base class is abstract and the pattern must return a complete working class. &lt;br /&gt;
  2. The base class contains default methods and is only sub-classed for cases where the default methods are insufficient.&lt;br /&gt;
  3. Parameters are passed to the factory telling it which of several class types to return. In this case the classes may share&lt;br /&gt;
     the same method names but may do something quite different.&lt;br /&gt;
&lt;br /&gt;
[[Image:abstractfactory.gif]]&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Abstract Factory Method[http://www.apwebco.com/gofpatterns/creational/AbstractFactory.html] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Factory v/s Abstract Factory Pattern[http://www.coderanch.com/t/99780/OO-Patterns-UML-Refactoring/Factory-Vs-Abstract-Factory-Pattern] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Builder Design Pattern v/s Factory Design Pattern[http://stackoverflow.com/questions/757743/what-is-the-difference-between-builder-design-pattern-and-factory-design-pattern]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Abstract Factory Method [http://userpages.umbc.edu/~tarr/dp/lectures/Factory.pdf]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;UML Diagram of Builder Pattern [http://en.wikipedia.org/wiki/Builder_pattern]&amp;lt;/li&amp;gt;&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28840</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28840"/>
		<updated>2009-11-18T23:17:30Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* Factory Patterns Insight */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.It Provide an interface for creating families of related or dependent objects without specifying their concrete classes.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This topic deals with the Factory method design pattern.It explains Factory design pattern and compares with other creational pattern to highlight the uniqueness and distinguishing features of the pattern.It also gives examples of where factory design pattern is used and scenarios wherein its more suitable than other creational patterns.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Factory Patterns Insight ===&lt;br /&gt;
&lt;br /&gt;
Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.It means that Creator class is written without knowing what actual ConcreteProduct class will be instantiated. The ConcreteProduct class which is instantiated is determined solely by which ConcreteCreator subclass is instantiated and used by the application.&lt;br /&gt;
&lt;br /&gt;
[[Image:facuml.jpg]]&lt;br /&gt;
&lt;br /&gt;
Benefits&lt;br /&gt;
Code is made more flexible and reusable by the elimination of instantiation of application-specific classes,Code deals only with the interface of the Factory class and can work with any sub class that supports this interface&lt;br /&gt;
&lt;br /&gt;
=== Applicants of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
Use the Factory Method pattern in any of the following situations:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;A class can't anticipate the class of objects it must create&lt;br /&gt;
&amp;lt;br&amp;gt;A class wants its subclasses to specify the objects it creates&lt;br /&gt;
&lt;br /&gt;
=== Examples of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
Factory design pattern can be explained by the following example. This example involves factory class called Mammals and it involves calling objects cat and dog with out actually creating an object for cat and dog class.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 public class MammalsFactory {&lt;br /&gt;
    public static Mammals getMammalObject(String name) {&lt;br /&gt;
       if (name.equalsIgnoreCase(&amp;quot;Cat&amp;quot;)){&lt;br /&gt;
          return new Cat();&lt;br /&gt;
       } else {&lt;br /&gt;
          return new Dog();&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Here we will be passing an argument to the getMammalObject function based on the argument passed we return the Mammals object of the class.&lt;br /&gt;
&lt;br /&gt;
Abstract class is created so that dog ans cat can implement this class&lt;br /&gt;
&lt;br /&gt;
 public abstract class Mammals {&lt;br /&gt;
       public abstract String doWalking();&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The cat and dog class can be created to implement the abstract class as follows&lt;br /&gt;
&lt;br /&gt;
 public class Cat extends Mammals {&lt;br /&gt;
 public String doWalking() {&lt;br /&gt;
 return &amp;quot;Cats has been Informed to perform Walk Operation&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Dog class&lt;br /&gt;
&lt;br /&gt;
 public class Dog extends Mammals {&lt;br /&gt;
 public String doWalking() {&lt;br /&gt;
 return &amp;quot;Dogs has been Informed to perform Walk Operation&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Now without creating object for dog and cat but we are instantiating the object for Mammals Factory class.&lt;br /&gt;
&lt;br /&gt;
 public class FactoryClient {&lt;br /&gt;
   public static void main(String args[]) {&lt;br /&gt;
       MammalsFactory mf = new MammalsFactory();&lt;br /&gt;
       System.out.println(mf.getMammalObject(&amp;quot;Dog&amp;quot;).doWalking());&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Builder Pattern ===&lt;br /&gt;
In Factory pattern, the factory is in charge of creating various subtypes of an object depending on the needs.&lt;br /&gt;
 &lt;br /&gt;
Where as in Builder pattern, the composition of the objects might differ within the same subclass.&lt;br /&gt;
&lt;br /&gt;
An example of a Factory method CarCreate might return a Audi or a Toyota where as in the same scenario if we are using a Builder pattern, it allows us to create objects with finer granularity like specifying different engine specifications (a 4 cylinder engine or a 6 cylinder engine)for the objects.&lt;br /&gt;
As seen from the above example the Factory pattern is a simpler version of the Builder Pattern.&lt;br /&gt;
&lt;br /&gt;
UML diagram of Builder Pattern&lt;br /&gt;
&lt;br /&gt;
[[Image:Builder2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Prototype Pattern ===&lt;br /&gt;
The Prototype pattern creates a new object by cloning an existing object. The client using the prototype object does not need to know what kind of object it is dealing with as long as the concrete prototype extends or implements the prototype interface/class. The concrete prototype object is responsible for cloning itself and returning the cloned object.&lt;br /&gt;
The pattern enables a client to create the kind of object required at runtime by selecting the appropriate prototype. The prototype classes are created generically by the client without the client knowing the exact type of the concrete prototype. New concrete prototypes can be added at runtime as long as they conform to the abstract prototype.&lt;br /&gt;
&lt;br /&gt;
[[Image:prototype.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Abstract Factory Pattern ===&lt;br /&gt;
Abstract pattern is one level of abstraction higher than the factory pattern.&lt;br /&gt;
A Factory pattern is one that returns an instance of one of several possible classes depending on the data provided to it.&lt;br /&gt;
Usually all of the classes it returns have a common parent class and common methods, but each of them performs a task differently and is optimized for different kinds of data.&lt;br /&gt;
&lt;br /&gt;
There are several similar variations on the factory pattern:&lt;br /&gt;
  1. The base class is abstract and the pattern must return a complete working class. &lt;br /&gt;
  2. The base class contains default methods and is only sub-classed for cases where the default methods are insufficient.&lt;br /&gt;
  3. Parameters are passed to the factory telling it which of several class types to return. In this case the classes may share&lt;br /&gt;
     the same method names but may do something quite different.&lt;br /&gt;
&lt;br /&gt;
[[Image:abstractfactory.gif]]&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Abstract Factory Method[http://www.apwebco.com/gofpatterns/creational/AbstractFactory.html] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Factory v/s Abstract Factory Pattern[http://www.coderanch.com/t/99780/OO-Patterns-UML-Refactoring/Factory-Vs-Abstract-Factory-Pattern] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Builder Design Pattern v/s Factory Design Pattern[http://stackoverflow.com/questions/757743/what-is-the-difference-between-builder-design-pattern-and-factory-design-pattern]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Abstract Factory Method [http://userpages.umbc.edu/~tarr/dp/lectures/Factory.pdf]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;UML Diagram of Builder Pattern [http://en.wikipedia.org/wiki/Builder_pattern]&amp;lt;/li&amp;gt;&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28838</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28838"/>
		<updated>2009-11-18T23:15:46Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* Factory Patterns Insight */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.It Provide an interface for creating families of related or dependent objects without specifying their concrete classes.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This topic deals with the Factory method design pattern.It explains Factory design pattern and compares with other creational pattern to highlight the uniqueness and distinguishing features of the pattern.It also gives examples of where factory design pattern is used and scenarios wherein its more suitable than other creational patterns.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Factory Patterns Insight ===&lt;br /&gt;
&lt;br /&gt;
Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.It means that Factory is written without knowing what actual sub class will be instantiated. The subclass which is instantiated is determined solely by which subclass is instantiated and used by the application.&lt;br /&gt;
&lt;br /&gt;
Factory method framework can be shown in the figure below.In the below figure the createDocument() method is a factory method.  &lt;br /&gt;
[[Image:facuml.jpg]]&lt;br /&gt;
&lt;br /&gt;
Benefits&lt;br /&gt;
Code is made more flexible and reusable by the elimination of instantiation of application-specific classes,Code deals only with the interface of the Factory class and can work with any sub class that supports this interface&lt;br /&gt;
&lt;br /&gt;
=== Applicants of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
Use the Factory Method pattern in any of the following situations:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;A class can't anticipate the class of objects it must create&lt;br /&gt;
&amp;lt;br&amp;gt;A class wants its subclasses to specify the objects it creates&lt;br /&gt;
&lt;br /&gt;
=== Examples of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
Factory design pattern can be explained by the following example. This example involves factory class called Mammals and it involves calling objects cat and dog with out actually creating an object for cat and dog class.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 public class MammalsFactory {&lt;br /&gt;
    public static Mammals getMammalObject(String name) {&lt;br /&gt;
       if (name.equalsIgnoreCase(&amp;quot;Cat&amp;quot;)){&lt;br /&gt;
          return new Cat();&lt;br /&gt;
       } else {&lt;br /&gt;
          return new Dog();&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Here we will be passing an argument to the getMammalObject function based on the argument passed we return the Mammals object of the class.&lt;br /&gt;
&lt;br /&gt;
Abstract class is created so that dog ans cat can implement this class&lt;br /&gt;
&lt;br /&gt;
 public abstract class Mammals {&lt;br /&gt;
       public abstract String doWalking();&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The cat and dog class can be created to implement the abstract class as follows&lt;br /&gt;
&lt;br /&gt;
 public class Cat extends Mammals {&lt;br /&gt;
 public String doWalking() {&lt;br /&gt;
 return &amp;quot;Cats has been Informed to perform Walk Operation&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Dog class&lt;br /&gt;
&lt;br /&gt;
 public class Dog extends Mammals {&lt;br /&gt;
 public String doWalking() {&lt;br /&gt;
 return &amp;quot;Dogs has been Informed to perform Walk Operation&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Now without creating object for dog and cat but we are instantiating the object for Mammals Factory class.&lt;br /&gt;
&lt;br /&gt;
 public class FactoryClient {&lt;br /&gt;
   public static void main(String args[]) {&lt;br /&gt;
       MammalsFactory mf = new MammalsFactory();&lt;br /&gt;
       System.out.println(mf.getMammalObject(&amp;quot;Dog&amp;quot;).doWalking());&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Builder Pattern ===&lt;br /&gt;
In Factory pattern, the factory is in charge of creating various subtypes of an object depending on the needs.&lt;br /&gt;
 &lt;br /&gt;
Where as in Builder pattern, the composition of the objects might differ within the same subclass.&lt;br /&gt;
&lt;br /&gt;
An example of a Factory method CarCreate might return a Audi or a Toyota where as in the same scenario if we are using a Builder pattern, it allows us to create objects with finer granularity like specifying different engine specifications (a 4 cylinder engine or a 6 cylinder engine)for the objects.&lt;br /&gt;
As seen from the above example the Factory pattern is a simpler version of the Builder Pattern.&lt;br /&gt;
&lt;br /&gt;
UML diagram of Builder Pattern&lt;br /&gt;
&lt;br /&gt;
[[Image:Builder2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Prototype Pattern ===&lt;br /&gt;
The Prototype pattern creates a new object by cloning an existing object. The client using the prototype object does not need to know what kind of object it is dealing with as long as the concrete prototype extends or implements the prototype interface/class. The concrete prototype object is responsible for cloning itself and returning the cloned object.&lt;br /&gt;
The pattern enables a client to create the kind of object required at runtime by selecting the appropriate prototype. The prototype classes are created generically by the client without the client knowing the exact type of the concrete prototype. New concrete prototypes can be added at runtime as long as they conform to the abstract prototype.&lt;br /&gt;
&lt;br /&gt;
[[Image:prototype.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Abstract Factory Pattern ===&lt;br /&gt;
Abstract pattern is one level of abstraction higher than the factory pattern.&lt;br /&gt;
A Factory pattern is one that returns an instance of one of several possible classes depending on the data provided to it.&lt;br /&gt;
Usually all of the classes it returns have a common parent class and common methods, but each of them performs a task differently and is optimized for different kinds of data.&lt;br /&gt;
&lt;br /&gt;
There are several similar variations on the factory pattern:&lt;br /&gt;
  1. The base class is abstract and the pattern must return a complete working class. &lt;br /&gt;
  2. The base class contains default methods and is only sub-classed for cases where the default methods are insufficient.&lt;br /&gt;
  3. Parameters are passed to the factory telling it which of several class types to return. In this case the classes may share&lt;br /&gt;
     the same method names but may do something quite different.&lt;br /&gt;
&lt;br /&gt;
[[Image:abstractfactory.gif]]&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Abstract Factory Method[http://www.apwebco.com/gofpatterns/creational/AbstractFactory.html] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Factory v/s Abstract Factory Pattern[http://www.coderanch.com/t/99780/OO-Patterns-UML-Refactoring/Factory-Vs-Abstract-Factory-Pattern] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Builder Design Pattern v/s Factory Design Pattern[http://stackoverflow.com/questions/757743/what-is-the-difference-between-builder-design-pattern-and-factory-design-pattern]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Abstract Factory Method [http://userpages.umbc.edu/~tarr/dp/lectures/Factory.pdf]&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Facuml.jpg&amp;diff=28836</id>
		<title>File:Facuml.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Facuml.jpg&amp;diff=28836"/>
		<updated>2009-11-18T23:15:11Z</updated>

		<summary type="html">&lt;p&gt;Beacon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28834</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28834"/>
		<updated>2009-11-18T23:14:32Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* Factory Patterns Insight */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.It Provide an interface for creating families of related or dependent objects without specifying their concrete classes.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This topic deals with the Factory method design pattern.It explains Factory design pattern and compares with other creational pattern to highlight the uniqueness and distinguishing features of the pattern.It also gives examples of where factory design pattern is used and scenarios wherein its more suitable than other creational patterns.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Factory Patterns Insight ===&lt;br /&gt;
&lt;br /&gt;
Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.It means that Factory is written without knowing what actual sub class will be instantiated. The subclass which is instantiated is determined solely by which subclass is instantiated and used by the application.&lt;br /&gt;
&lt;br /&gt;
Factory method framework can be shown in the figure below.In the below figure the createDocument() method is a factory method.  &lt;br /&gt;
[[Image:fac1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Benefits&lt;br /&gt;
Code is made more flexible and reusable by the elimination of instantiation of application-specific classes,Code deals only with the interface of the Factory class and can work with any sub class that supports this interface&lt;br /&gt;
&lt;br /&gt;
=== Applicants of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
Use the Factory Method pattern in any of the following situations:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;A class can't anticipate the class of objects it must create&lt;br /&gt;
&amp;lt;br&amp;gt;A class wants its subclasses to specify the objects it creates&lt;br /&gt;
&lt;br /&gt;
=== Examples of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
Factory design pattern can be explained by the following example. This example involves factory class called Mammals and it involves calling objects cat and dog with out actually creating an object for cat and dog class.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 public class MammalsFactory {&lt;br /&gt;
    public static Mammals getMammalObject(String name) {&lt;br /&gt;
       if (name.equalsIgnoreCase(&amp;quot;Cat&amp;quot;)){&lt;br /&gt;
          return new Cat();&lt;br /&gt;
       } else {&lt;br /&gt;
          return new Dog();&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Here we will be passing an argument to the getMammalObject function based on the argument passed we return the Mammals object of the class.&lt;br /&gt;
&lt;br /&gt;
Abstract class is created so that dog ans cat can implement this class&lt;br /&gt;
&lt;br /&gt;
 public abstract class Mammals {&lt;br /&gt;
       public abstract String doWalking();&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The cat and dog class can be created to implement the abstract class as follows&lt;br /&gt;
&lt;br /&gt;
 public class Cat extends Mammals {&lt;br /&gt;
 public String doWalking() {&lt;br /&gt;
 return &amp;quot;Cats has been Informed to perform Walk Operation&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Dog class&lt;br /&gt;
&lt;br /&gt;
 public class Dog extends Mammals {&lt;br /&gt;
 public String doWalking() {&lt;br /&gt;
 return &amp;quot;Dogs has been Informed to perform Walk Operation&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Now without creating object for dog and cat but we are instantiating the object for Mammals Factory class.&lt;br /&gt;
&lt;br /&gt;
 public class FactoryClient {&lt;br /&gt;
   public static void main(String args[]) {&lt;br /&gt;
       MammalsFactory mf = new MammalsFactory();&lt;br /&gt;
       System.out.println(mf.getMammalObject(&amp;quot;Dog&amp;quot;).doWalking());&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Builder Pattern ===&lt;br /&gt;
In Factory pattern, the factory is in charge of creating various subtypes of an object depending on the needs.&lt;br /&gt;
 &lt;br /&gt;
Where as in Builder pattern, the composition of the objects might differ within the same subclass.&lt;br /&gt;
&lt;br /&gt;
An example of a Factory method CarCreate might return a Audi or a Toyota where as in the same scenario if we are using a Builder pattern, it allows us to create objects with finer granularity like specifying different engine specifications (a 4 cylinder engine or a 6 cylinder engine)for the objects.&lt;br /&gt;
As seen from the above example the Factory pattern is a simpler version of the Builder Pattern.&lt;br /&gt;
&lt;br /&gt;
UML diagram of Builder Pattern&lt;br /&gt;
&lt;br /&gt;
[[Image:Builder2.png]]&lt;br /&gt;
Source: [http://en.wikipedia.org/wiki/Builder_pattern]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Prototype Pattern ===&lt;br /&gt;
The Prototype pattern creates a new object by cloning an existing object. The client using the prototype object does not need to know what kind of object it is dealing with as long as the concrete prototype extends or implements the prototype interface/class. The concrete prototype object is responsible for cloning itself and returning the cloned object.&lt;br /&gt;
The pattern enables a client to create the kind of object required at runtime by selecting the appropriate prototype. The prototype classes are created generically by the client without the client knowing the exact type of the concrete prototype. New concrete prototypes can be added at runtime as long as they conform to the abstract prototype.&lt;br /&gt;
&lt;br /&gt;
[[Image:prototype.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Abstract Factory Pattern ===&lt;br /&gt;
Abstract pattern is one level of abstraction higher than the factory pattern.&lt;br /&gt;
A Factory pattern is one that returns an instance of one of several possible classes depending on the data provided to it.&lt;br /&gt;
Usually all of the classes it returns have a common parent class and common methods, but each of them performs a task differently and is optimized for different kinds of data.&lt;br /&gt;
&lt;br /&gt;
There are several similar variations on the factory pattern:&lt;br /&gt;
  1. The base class is abstract and the pattern must return a complete working class. &lt;br /&gt;
  2. The base class contains default methods and is only sub-classed for cases where the default methods are insufficient.&lt;br /&gt;
  3. Parameters are passed to the factory telling it which of several class types to return. In this case the classes may share&lt;br /&gt;
     the same method names but may do something quite different.&lt;br /&gt;
&lt;br /&gt;
[[Image:abstractfactory.gif]]&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://www.apwebco.com/gofpatterns/creational/AbstractFactory.html] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;le&amp;gt;[http://www.coderanch.com/t/99780/OO-Patterns-UML-Refactoring/Factory-Vs-Abstract-Factory-Pattern] &amp;lt;/li&amp;gt;&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28833</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28833"/>
		<updated>2009-11-18T23:09:00Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* Applicants of Factory Pattern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.It Provide an interface for creating families of related or dependent objects without specifying their concrete classes.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This topic deals with the Factory method design pattern.It explains Factory design pattern and compares with other creational pattern to highlight the uniqueness and distinguishing features of the pattern.It also gives examples of where factory design pattern is used and scenarios wherein its more suitable than other creational patterns.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Factory Patterns Insight ===&lt;br /&gt;
&lt;br /&gt;
Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.It means that Factory is written without knowing what actual sub class will be instantiated. The subclass which is instantiated is determined solely by which subclass is instantiated and used by the application.&lt;br /&gt;
&lt;br /&gt;
Factory method framework can be shown in the figure below.In the below figure the createDocument() method is a factory method.  &lt;br /&gt;
[[Image:fac.jpg]]&lt;br /&gt;
&lt;br /&gt;
Benefits&lt;br /&gt;
Code is made more flexible and reusable by the elimination of instantiation of application-specific classes,Code deals only with the interface of the Factory class and can work with any sub class that supports this interface&lt;br /&gt;
&lt;br /&gt;
=== Applicants of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
Use the Factory Method pattern in any of the following situations:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;A class can't anticipate the class of objects it must create&lt;br /&gt;
&amp;lt;br&amp;gt;A class wants its subclasses to specify the objects it creates&lt;br /&gt;
&lt;br /&gt;
=== Examples of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
Factory design pattern can be explained by the following example. This example involves factory class called Mammals and it involves calling objects cat and dog with out actually creating an object for cat and dog class.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 public class MammalsFactory {&lt;br /&gt;
    public static Mammals getMammalObject(String name) {&lt;br /&gt;
       if (name.equalsIgnoreCase(&amp;quot;Cat&amp;quot;)){&lt;br /&gt;
          return new Cat();&lt;br /&gt;
       } else {&lt;br /&gt;
          return new Dog();&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Here we will be passing an argument to the getMammalObject function based on the argument passed we return the Mammals object of the class.&lt;br /&gt;
&lt;br /&gt;
Abstract class is created so that dog ans cat can implement this class&lt;br /&gt;
&lt;br /&gt;
 public abstract class Mammals {&lt;br /&gt;
       public abstract String doWalking();&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The cat and dog class can be created to implement the abstract class as follows&lt;br /&gt;
&lt;br /&gt;
 public class Cat extends Mammals {&lt;br /&gt;
 public String doWalking() {&lt;br /&gt;
 return &amp;quot;Cats has been Informed to perform Walk Operation&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Dog class&lt;br /&gt;
&lt;br /&gt;
 public class Dog extends Mammals {&lt;br /&gt;
 public String doWalking() {&lt;br /&gt;
 return &amp;quot;Dogs has been Informed to perform Walk Operation&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Now without creating object for dog and cat but we are instantiating the object for Mammals Factory class.&lt;br /&gt;
&lt;br /&gt;
 public class FactoryClient {&lt;br /&gt;
   public static void main(String args[]) {&lt;br /&gt;
       MammalsFactory mf = new MammalsFactory();&lt;br /&gt;
       System.out.println(mf.getMammalObject(&amp;quot;Dog&amp;quot;).doWalking());&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Builder Pattern ===&lt;br /&gt;
In Factory pattern, the factory is in charge of creating various subtypes of an object depending on the needs.&lt;br /&gt;
 &lt;br /&gt;
Where as in Builder pattern, the composition of the objects might differ within the same subclass.&lt;br /&gt;
&lt;br /&gt;
An example of a Factory method CarCreate might return a Audi or a Toyota where as in the same scenario if we are using a Builder pattern, it allows us to create objects with finer granularity like specifying different engine specifications (a 4 cylinder engine or a 6 cylinder engine)for the objects.&lt;br /&gt;
As seen from the above example the Factory pattern is a simpler version of the Builder Pattern.&lt;br /&gt;
&lt;br /&gt;
UML diagram of Builder Pattern&lt;br /&gt;
&lt;br /&gt;
[[Image:Builder2.png]]&lt;br /&gt;
Source: [http://en.wikipedia.org/wiki/Builder_pattern]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Prototype Pattern ===&lt;br /&gt;
The Prototype pattern creates a new object by cloning an existing object. The client using the prototype object does not need to know what kind of object it is dealing with as long as the concrete prototype extends or implements the prototype interface/class. The concrete prototype object is responsible for cloning itself and returning the cloned object.&lt;br /&gt;
The pattern enables a client to create the kind of object required at runtime by selecting the appropriate prototype. The prototype classes are created generically by the client without the client knowing the exact type of the concrete prototype. New concrete prototypes can be added at runtime as long as they conform to the abstract prototype.&lt;br /&gt;
&lt;br /&gt;
[[Image:prototype.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Abstract Factory Pattern ===&lt;br /&gt;
Abstract pattern is one level of abstraction higher than the factory pattern.&lt;br /&gt;
A Factory pattern is one that returns an instance of one of several possible classes depending on the data provided to it.&lt;br /&gt;
Usually all of the classes it returns have a common parent class and common methods, but each of them performs a task differently and is optimized for different kinds of data.&lt;br /&gt;
&lt;br /&gt;
There are several similar variations on the factory pattern:&lt;br /&gt;
  1. The base class is abstract and the pattern must return a complete working class. &lt;br /&gt;
  2. The base class contains default methods and is only sub-classed for cases where the default methods are insufficient.&lt;br /&gt;
  3. Parameters are passed to the factory telling it which of several class types to return. In this case the classes may share&lt;br /&gt;
     the same method names but may do something quite different.&lt;br /&gt;
&lt;br /&gt;
[[Image:abstractfactory.gif]]&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://www.apwebco.com/gofpatterns/creational/AbstractFactory.html] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;le&amp;gt;[http://www.coderanch.com/t/99780/OO-Patterns-UML-Refactoring/Factory-Vs-Abstract-Factory-Pattern] &amp;lt;/li&amp;gt;&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28832</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28832"/>
		<updated>2009-11-18T23:07:45Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* Applicants of Factory Pattern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.It Provide an interface for creating families of related or dependent objects without specifying their concrete classes.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This topic deals with the Factory method design pattern.It explains Factory design pattern and compares with other creational pattern to highlight the uniqueness and distinguishing features of the pattern.It also gives examples of where factory design pattern is used and scenarios wherein its more suitable than other creational patterns.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Factory Patterns Insight ===&lt;br /&gt;
&lt;br /&gt;
Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.It means that Factory is written without knowing what actual sub class will be instantiated. The subclass which is instantiated is determined solely by which subclass is instantiated and used by the application.&lt;br /&gt;
&lt;br /&gt;
Factory method framework can be shown in the figure below.In the below figure the createDocument() method is a factory method.  &lt;br /&gt;
[[Image:fac.jpg]]&lt;br /&gt;
&lt;br /&gt;
Benefits&lt;br /&gt;
Code is made more flexible and reusable by the elimination of instantiation of application-specific classes,Code deals only with the interface of the Factory class and can work with any sub class that supports this interface&lt;br /&gt;
&lt;br /&gt;
=== Applicants of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
Use the Factory Method pattern in any of the following situations:&lt;br /&gt;
&amp;lt;br&amp;gt;A class can't anticipate the class of objects it must create&lt;br /&gt;
&amp;lt;br&amp;gt;A class wants its subclasses to specify the objects it creates&lt;br /&gt;
&lt;br /&gt;
=== Examples of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
Factory design pattern can be explained by the following example. This example involves factory class called Mammals and it involves calling objects cat and dog with out actually creating an object for cat and dog class.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 public class MammalsFactory {&lt;br /&gt;
    public static Mammals getMammalObject(String name) {&lt;br /&gt;
       if (name.equalsIgnoreCase(&amp;quot;Cat&amp;quot;)){&lt;br /&gt;
          return new Cat();&lt;br /&gt;
       } else {&lt;br /&gt;
          return new Dog();&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Here we will be passing an argument to the getMammalObject function based on the argument passed we return the Mammals object of the class.&lt;br /&gt;
&lt;br /&gt;
Abstract class is created so that dog ans cat can implement this class&lt;br /&gt;
&lt;br /&gt;
 public abstract class Mammals {&lt;br /&gt;
       public abstract String doWalking();&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The cat and dog class can be created to implement the abstract class as follows&lt;br /&gt;
&lt;br /&gt;
 public class Cat extends Mammals {&lt;br /&gt;
 public String doWalking() {&lt;br /&gt;
 return &amp;quot;Cats has been Informed to perform Walk Operation&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Dog class&lt;br /&gt;
&lt;br /&gt;
 public class Dog extends Mammals {&lt;br /&gt;
 public String doWalking() {&lt;br /&gt;
 return &amp;quot;Dogs has been Informed to perform Walk Operation&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Now without creating object for dog and cat but we are instantiating the object for Mammals Factory class.&lt;br /&gt;
&lt;br /&gt;
 public class FactoryClient {&lt;br /&gt;
   public static void main(String args[]) {&lt;br /&gt;
       MammalsFactory mf = new MammalsFactory();&lt;br /&gt;
       System.out.println(mf.getMammalObject(&amp;quot;Dog&amp;quot;).doWalking());&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Builder Pattern ===&lt;br /&gt;
In Factory pattern, the factory is in charge of creating various subtypes of an object depending on the needs.&lt;br /&gt;
 &lt;br /&gt;
Where as in Builder pattern, the composition of the objects might differ within the same subclass.&lt;br /&gt;
&lt;br /&gt;
An example of a Factory method CarCreate might return a Audi or a Toyota where as in the same scenario if we are using a Builder pattern, it allows us to create objects with finer granularity like specifying different engine specifications (a 4 cylinder engine or a 6 cylinder engine)for the objects.&lt;br /&gt;
As seen from the above example the Factory pattern is a simpler version of the Builder Pattern.&lt;br /&gt;
&lt;br /&gt;
UML diagram of Builder Pattern&lt;br /&gt;
&lt;br /&gt;
[[Image:Builder2.png]]&lt;br /&gt;
Source: [http://en.wikipedia.org/wiki/Builder_pattern]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Prototype Pattern ===&lt;br /&gt;
The Prototype pattern creates a new object by cloning an existing object. The client using the prototype object does not need to know what kind of object it is dealing with as long as the concrete prototype extends or implements the prototype interface/class. The concrete prototype object is responsible for cloning itself and returning the cloned object.&lt;br /&gt;
The pattern enables a client to create the kind of object required at runtime by selecting the appropriate prototype. The prototype classes are created generically by the client without the client knowing the exact type of the concrete prototype. New concrete prototypes can be added at runtime as long as they conform to the abstract prototype.&lt;br /&gt;
&lt;br /&gt;
[[Image:prototype.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Abstract Factory Pattern ===&lt;br /&gt;
Abstract pattern is one level of abstraction higher than the factory pattern.&lt;br /&gt;
A Factory pattern is one that returns an instance of one of several possible classes depending on the data provided to it.&lt;br /&gt;
Usually all of the classes it returns have a common parent class and common methods, but each of them performs a task differently and is optimized for different kinds of data.&lt;br /&gt;
&lt;br /&gt;
There are several similar variations on the factory pattern:&lt;br /&gt;
  1. The base class is abstract and the pattern must return a complete working class. &lt;br /&gt;
  2. The base class contains default methods and is only sub-classed for cases where the default methods are insufficient.&lt;br /&gt;
  3. Parameters are passed to the factory telling it which of several class types to return. In this case the classes may share&lt;br /&gt;
     the same method names but may do something quite different.&lt;br /&gt;
&lt;br /&gt;
[[Image:abstractfactory.gif]]&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://www.apwebco.com/gofpatterns/creational/AbstractFactory.html] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;le&amp;gt;[http://www.coderanch.com/t/99780/OO-Patterns-UML-Refactoring/Factory-Vs-Abstract-Factory-Pattern] &amp;lt;/li&amp;gt;&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28180</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28180"/>
		<updated>2009-11-18T05:49:48Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* Examples of Factory Pattern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.It Provide an interface for creating families of related or dependent objects without specifying their concrete classes.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This topic deals with the Factory method design pattern.It explains Factory design pattern and compares with other creational pattern to highlight the uniqueness and distinguishing features of the pattern.It also gives examples of where factory design pattern is used and scenarios wherein its more suitable than other creational patterns.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Factory Patterns Insight ===&lt;br /&gt;
&lt;br /&gt;
Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.It means that Factory is written without knowing what actual sub class will be instantiated. The subclass which is instantiated is determined solely by which subclass is instantiated and used by the application.&lt;br /&gt;
&lt;br /&gt;
Factory method framework can be shown in the figure below.In the below figure the createDocument() method is a factory method.  &lt;br /&gt;
[[Image:fac.jpg]]&lt;br /&gt;
&lt;br /&gt;
Benefits&lt;br /&gt;
Code is made more flexible and reusable by the elimination of instantiation of application-specific classes,Code deals only with the interface of the Factory class and can work with any sub class that supports this interface&lt;br /&gt;
&lt;br /&gt;
=== Applicants of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
=== Examples of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
Factory design pattern can be explained by the following example. This example involves factory class called Mammals and it involves calling objects cat and dog with out actually creating an object for cat and dog class.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 public class MammalsFactory {&lt;br /&gt;
    public static Mammals getMammalObject(String name) {&lt;br /&gt;
       if (name.equalsIgnoreCase(&amp;quot;Cat&amp;quot;)){&lt;br /&gt;
          return new Cat();&lt;br /&gt;
       } else {&lt;br /&gt;
          return new Dog();&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Here we will be passing an argument to the getMammalObject function based on the argument passed we return the Mammals object of the class.&lt;br /&gt;
&lt;br /&gt;
Abstract class is created so that dog ans cat can implement this class&lt;br /&gt;
&lt;br /&gt;
 public abstract class Mammals {&lt;br /&gt;
       public abstract String doWalking();&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The cat and dog class can be created to implement the abstract class as follows&lt;br /&gt;
&lt;br /&gt;
 public class Cat extends Mammals {&lt;br /&gt;
 public String doWalking() {&lt;br /&gt;
 return &amp;quot;Cats has been Informed to perform Walk Operation&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Dog class&lt;br /&gt;
&lt;br /&gt;
 public class Dog extends Mammals {&lt;br /&gt;
 public String doWalking() {&lt;br /&gt;
 return &amp;quot;Dogs has been Informed to perform Walk Operation&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Now without creating object for dog and cat but we are instantiating the object for Mammals Factory class.&lt;br /&gt;
&lt;br /&gt;
 public class FactoryClient {&lt;br /&gt;
   public static void main(String args[]) {&lt;br /&gt;
       MammalsFactory mf = new MammalsFactory();&lt;br /&gt;
       System.out.println(mf.getMammalObject(&amp;quot;Dog&amp;quot;).doWalking());&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Builder Pattern ===&lt;br /&gt;
In Factory pattern, the factory is in charge of creating various subtypes of an object depending on the needs.&lt;br /&gt;
 &lt;br /&gt;
Where as in Builder pattern, the composition of the objects might differ within the same subclass.&lt;br /&gt;
&lt;br /&gt;
An example of a Factory method CarCreate might return a Audi or a Toyota where as in the same scenario if we are using a Builder pattern, it allows us to create objects with finer granularity like specifying different engine specifications (a 4 cylinder engine or a 6 cylinder engine)for the objects.&lt;br /&gt;
As seen from the above example the Factory pattern is a simpler version of the Builder Pattern.&lt;br /&gt;
&lt;br /&gt;
UML diagram of Builder Pattern&lt;br /&gt;
&lt;br /&gt;
[[Image:Builder2.png]]&lt;br /&gt;
Source: [http://en.wikipedia.org/wiki/Builder_pattern]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Prototype Pattern ===&lt;br /&gt;
The Prototype pattern creates a new object by cloning an existing object. The client using the prototype object does not need to know what kind of object it is dealing with as long as the concrete prototype extends or implements the prototype interface/class. The concrete prototype object is responsible for cloning itself and returning the cloned object.&lt;br /&gt;
The pattern enables a client to create the kind of object required at runtime by selecting the appropriate prototype. The prototype classes are created generically by the client without the client knowing the exact type of the concrete prototype. New concrete prototypes can be added at runtime as long as they conform to the abstract prototype.&lt;br /&gt;
&lt;br /&gt;
[[Image:prototype.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Abstract Factory Pattern ===&lt;br /&gt;
Abstract pattern is one level of abstraction higher than the factory pattern.&lt;br /&gt;
A Factory pattern is one that returns an instance of one of several possible classes depending on the data provided to it.&lt;br /&gt;
Usually all of the classes it returns have a common parent class and common methods, but each of them performs a task differently and is optimized for different kinds of data.&lt;br /&gt;
&lt;br /&gt;
There are several similar variations on the factory pattern:&lt;br /&gt;
  1. The base class is abstract and the pattern must return a complete working class. &lt;br /&gt;
  2. The base class contains default methods and is only sub-classed for cases where the default methods are insufficient.&lt;br /&gt;
  3. Parameters are passed to the factory telling it which of several class types to return. In this case the classes may share&lt;br /&gt;
     the same method names but may do something quite different.&lt;br /&gt;
&lt;br /&gt;
[[Image:abstractfactory.gif]]&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28178</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28178"/>
		<updated>2009-11-18T05:49:03Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* Examples of Factory Pattern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.It Provide an interface for creating families of related or dependent objects without specifying their concrete classes.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This topic deals with the Factory method design pattern.It explains Factory design pattern and compares with other creational pattern to highlight the uniqueness and distinguishing features of the pattern.It also gives examples of where factory design pattern is used and scenarios wherein its more suitable than other creational patterns.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Factory Patterns Insight ===&lt;br /&gt;
&lt;br /&gt;
Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.It means that Factory is written without knowing what actual sub class will be instantiated. The subclass which is instantiated is determined solely by which subclass is instantiated and used by the application.&lt;br /&gt;
&lt;br /&gt;
Factory method framework can be shown in the figure below.In the below figure the createDocument() method is a factory method.  &lt;br /&gt;
[[Image:fac.jpg]]&lt;br /&gt;
&lt;br /&gt;
Benefits&lt;br /&gt;
Code is made more flexible and reusable by the elimination of instantiation of application-specific classes,Code deals only with the interface of the Factory class and can work with any sub class that supports this interface&lt;br /&gt;
&lt;br /&gt;
=== Applicants of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
=== Examples of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
Factory design pattern can be explained by the following example. This example involves factory class called Mammals and it involves calling objects cat and dog with out actually creating an object for cat and dog class.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 public class MammalsFactory {&lt;br /&gt;
    public static Mammals getMammalObject(String name) {&lt;br /&gt;
       if (name.equalsIgnoreCase(&amp;quot;Cat&amp;quot;)){&lt;br /&gt;
          return new Cat();&lt;br /&gt;
       } else {&lt;br /&gt;
          return new Dog();&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Here we will be passing an argument to the getMammalObject function based on the argument passed we return the Mammals object of the class.&lt;br /&gt;
&lt;br /&gt;
Abstract class is created so that dog ans cat can implement this class&lt;br /&gt;
&lt;br /&gt;
 public abstract class Mammals {&lt;br /&gt;
       public abstract String doWalking();&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The cat and dog class can be created to implement the abstract class as follows&lt;br /&gt;
&lt;br /&gt;
 public class Cat extends Mammals {&lt;br /&gt;
	public String doWalking() {&lt;br /&gt;
		return &amp;quot;Cats has been Informed to perform Walk Operation&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Dog class&lt;br /&gt;
&lt;br /&gt;
 public class Dog extends Mammals {&lt;br /&gt;
	public String doWalking() {&lt;br /&gt;
    	    return &amp;quot;Dogs has been Informed to perform Walk Operation&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Now without creating object for dog and cat but we are instantiating the object for Mammals Factory class.&lt;br /&gt;
&lt;br /&gt;
 public class FactoryClient {&lt;br /&gt;
   public static void main(String args[]) {&lt;br /&gt;
       MammalsFactory mf = new MammalsFactory();&lt;br /&gt;
       System.out.println(mf.getMammalObject(&amp;quot;Dog&amp;quot;).doWalking());&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Builder Pattern ===&lt;br /&gt;
In Factory pattern, the factory is in charge of creating various subtypes of an object depending on the needs.&lt;br /&gt;
 &lt;br /&gt;
Where as in Builder pattern, the composition of the objects might differ within the same subclass.&lt;br /&gt;
&lt;br /&gt;
An example of a Factory method CarCreate might return a Audi or a Toyota where as in the same scenario if we are using a Builder pattern, it allows us to create objects with finer granularity like specifying different engine specifications (a 4 cylinder engine or a 6 cylinder engine)for the objects.&lt;br /&gt;
As seen from the above example the Factory pattern is a simpler version of the Builder Pattern.&lt;br /&gt;
&lt;br /&gt;
UML diagram of Builder Pattern&lt;br /&gt;
&lt;br /&gt;
[[Image:Builder2.png]]&lt;br /&gt;
Source: [http://en.wikipedia.org/wiki/Builder_pattern]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Prototype Pattern ===&lt;br /&gt;
The Prototype pattern creates a new object by cloning an existing object. The client using the prototype object does not need to know what kind of object it is dealing with as long as the concrete prototype extends or implements the prototype interface/class. The concrete prototype object is responsible for cloning itself and returning the cloned object.&lt;br /&gt;
The pattern enables a client to create the kind of object required at runtime by selecting the appropriate prototype. The prototype classes are created generically by the client without the client knowing the exact type of the concrete prototype. New concrete prototypes can be added at runtime as long as they conform to the abstract prototype.&lt;br /&gt;
&lt;br /&gt;
[[Image:prototype.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Abstract Factory Pattern ===&lt;br /&gt;
Abstract pattern is one level of abstraction higher than the factory pattern.&lt;br /&gt;
A Factory pattern is one that returns an instance of one of several possible classes depending on the data provided to it.&lt;br /&gt;
Usually all of the classes it returns have a common parent class and common methods, but each of them performs a task differently and is optimized for different kinds of data.&lt;br /&gt;
&lt;br /&gt;
There are several similar variations on the factory pattern:&lt;br /&gt;
  1. The base class is abstract and the pattern must return a complete working class. &lt;br /&gt;
  2. The base class contains default methods and is only sub-classed for cases where the default methods are insufficient.&lt;br /&gt;
  3. Parameters are passed to the factory telling it which of several class types to return. In this case the classes may share&lt;br /&gt;
     the same method names but may do something quite different.&lt;br /&gt;
&lt;br /&gt;
[[Image:abstractfactory.gif]]&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28176</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28176"/>
		<updated>2009-11-18T05:47:59Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* Examples of Factory Pattern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.It Provide an interface for creating families of related or dependent objects without specifying their concrete classes.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This topic deals with the Factory method design pattern.It explains Factory design pattern and compares with other creational pattern to highlight the uniqueness and distinguishing features of the pattern.It also gives examples of where factory design pattern is used and scenarios wherein its more suitable than other creational patterns.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Factory Patterns Insight ===&lt;br /&gt;
&lt;br /&gt;
Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.It means that Factory is written without knowing what actual sub class will be instantiated. The subclass which is instantiated is determined solely by which subclass is instantiated and used by the application.&lt;br /&gt;
&lt;br /&gt;
Factory method framework can be shown in the figure below.In the below figure the createDocument() method is a factory method.  &lt;br /&gt;
[[Image:fac.jpg]]&lt;br /&gt;
&lt;br /&gt;
Benefits&lt;br /&gt;
Code is made more flexible and reusable by the elimination of instantiation of application-specific classes,Code deals only with the interface of the Factory class and can work with any sub class that supports this interface&lt;br /&gt;
&lt;br /&gt;
=== Applicants of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
=== Examples of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
Factory design pattern can be explained by the following example. This example involves factory class called Mammals and it involves calling objects cat and dog with out actually creating an object for cat and dog class.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 public class MammalsFactory {&lt;br /&gt;
    public static Mammals getMammalObject(String name) {&lt;br /&gt;
       if (name.equalsIgnoreCase(&amp;quot;Cat&amp;quot;)){&lt;br /&gt;
          return new Cat();&lt;br /&gt;
       } else {&lt;br /&gt;
          return new Dog();&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Here we will be passing an argument to the getMammalObject function based on the argument passed we return the Mammals object of the class.&lt;br /&gt;
&lt;br /&gt;
Abstract class is created so that dog ans cat can implement this class&lt;br /&gt;
&lt;br /&gt;
 public abstract class Mammals {&lt;br /&gt;
       public abstract String doWalking();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
The cat and dog class can be created to implement the abstract class as follows&lt;br /&gt;
&lt;br /&gt;
 public class Cat extends Mammals {&lt;br /&gt;
	public String doWalking() {&lt;br /&gt;
		return &amp;quot;Cats has been Informed to perform Walk Operation&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Dog class&lt;br /&gt;
&lt;br /&gt;
 public class Dog extends Mammals {&lt;br /&gt;
	public String doWalking() {&lt;br /&gt;
    	    return &amp;quot;Dogs has been Informed to perform Walk Operation&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Now without creating object for dog and cat but we are instantiating the object for Mammals Factory class.&lt;br /&gt;
&lt;br /&gt;
 public class FactoryClient {&lt;br /&gt;
   public static void main(String args[]) {&lt;br /&gt;
       MammalsFactory mf = new MammalsFactory();&lt;br /&gt;
       System.out.println(mf.getMammalObject(&amp;quot;Dog&amp;quot;).doWalking());&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Builder Pattern ===&lt;br /&gt;
In Factory pattern, the factory is in charge of creating various subtypes of an object depending on the needs.&lt;br /&gt;
 &lt;br /&gt;
Where as in Builder pattern, the composition of the objects might differ within the same subclass.&lt;br /&gt;
&lt;br /&gt;
An example of a Factory method CarCreate might return a Audi or a Toyota where as in the same scenario if we are using a Builder pattern, it allows us to create objects with finer granularity like specifying different engine specifications (a 4 cylinder engine or a 6 cylinder engine)for the objects.&lt;br /&gt;
As seen from the above example the Factory pattern is a simpler version of the Builder Pattern.&lt;br /&gt;
&lt;br /&gt;
UML diagram of Builder Pattern&lt;br /&gt;
&lt;br /&gt;
[[Image:Builder2.png]]&lt;br /&gt;
Source: [http://en.wikipedia.org/wiki/Builder_pattern]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Prototype Pattern ===&lt;br /&gt;
The Prototype pattern creates a new object by cloning an existing object. The client using the prototype object does not need to know what kind of object it is dealing with as long as the concrete prototype extends or implements the prototype interface/class. The concrete prototype object is responsible for cloning itself and returning the cloned object.&lt;br /&gt;
The pattern enables a client to create the kind of object required at runtime by selecting the appropriate prototype. The prototype classes are created generically by the client without the client knowing the exact type of the concrete prototype. New concrete prototypes can be added at runtime as long as they conform to the abstract prototype.&lt;br /&gt;
&lt;br /&gt;
[[Image:prototype.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Abstract Factory Pattern ===&lt;br /&gt;
Abstract pattern is one level of abstraction higher than the factory pattern.&lt;br /&gt;
A Factory pattern is one that returns an instance of one of several possible classes depending on the data provided to it.&lt;br /&gt;
Usually all of the classes it returns have a common parent class and common methods, but each of them performs a task differently and is optimized for different kinds of data.&lt;br /&gt;
&lt;br /&gt;
There are several similar variations on the factory pattern:&lt;br /&gt;
  1. The base class is abstract and the pattern must return a complete working class. &lt;br /&gt;
  2. The base class contains default methods and is only sub-classed for cases where the default methods are insufficient.&lt;br /&gt;
  3. Parameters are passed to the factory telling it which of several class types to return. In this case the classes may share&lt;br /&gt;
     the same method names but may do something quite different.&lt;br /&gt;
&lt;br /&gt;
[[Image:abstractfactory.gif]]&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28174</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28174"/>
		<updated>2009-11-18T05:47:01Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* Examples of Factory Pattern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.It Provide an interface for creating families of related or dependent objects without specifying their concrete classes.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This topic deals with the Factory method design pattern.It explains Factory design pattern and compares with other creational pattern to highlight the uniqueness and distinguishing features of the pattern.It also gives examples of where factory design pattern is used and scenarios wherein its more suitable than other creational patterns.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Factory Patterns Insight ===&lt;br /&gt;
&lt;br /&gt;
Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.It means that Factory is written without knowing what actual sub class will be instantiated. The subclass which is instantiated is determined solely by which subclass is instantiated and used by the application.&lt;br /&gt;
&lt;br /&gt;
Factory method framework can be shown in the figure below.In the below figure the createDocument() method is a factory method.  &lt;br /&gt;
[[Image:fac.jpg]]&lt;br /&gt;
&lt;br /&gt;
Benefits&lt;br /&gt;
Code is made more flexible and reusable by the elimination of instantiation of application-specific classes,Code deals only with the interface of the Factory class and can work with any sub class that supports this interface&lt;br /&gt;
&lt;br /&gt;
=== Applicants of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
=== Examples of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
Factory design pattern can be explained by the following example. This example involves factory class called Mammals and it involves calling objects cat and dog with out actually creating an object for cat and dog class.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 public class MammalsFactory {&lt;br /&gt;
    public static Mammals getMammalObject(String name) {&lt;br /&gt;
       if (name.equalsIgnoreCase(&amp;quot;Cat&amp;quot;)){&lt;br /&gt;
          return new Cat();&lt;br /&gt;
       } else {&lt;br /&gt;
          return new Dog();&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Here we will be passing an argument to the getMammalObject function based on the argument passed we return the Mammals object of the class.&lt;br /&gt;
&lt;br /&gt;
Abstract class is created so that dog ans cat can implement this class&lt;br /&gt;
&lt;br /&gt;
 public abstract class Mammals {&lt;br /&gt;
       public abstract String doWalking();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
The cat and dog class can be created to implement the abstract class as follows&lt;br /&gt;
&lt;br /&gt;
 public class Cat extends Mammals {&lt;br /&gt;
	public String doWalking() {&lt;br /&gt;
		return &amp;quot;Cats has been Informed to perform Walk Operation&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 public class Dog extends Mammals {&lt;br /&gt;
	public String doWalking() {&lt;br /&gt;
    	    return &amp;quot;Dogs has been Informed to perform Walk Operation&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Now without creating object for dog and cat but we are instantiating the object for Mammals Factory class.&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Builder Pattern ===&lt;br /&gt;
In Factory pattern, the factory is in charge of creating various subtypes of an object depending on the needs.&lt;br /&gt;
 &lt;br /&gt;
Where as in Builder pattern, the composition of the objects might differ within the same subclass.&lt;br /&gt;
&lt;br /&gt;
An example of a Factory method CarCreate might return a Audi or a Toyota where as in the same scenario if we are using a Builder pattern, it allows us to create objects with finer granularity like specifying different engine specifications (a 4 cylinder engine or a 6 cylinder engine)for the objects.&lt;br /&gt;
As seen from the above example the Factory pattern is a simpler version of the Builder Pattern.&lt;br /&gt;
&lt;br /&gt;
UML diagram of Builder Pattern&lt;br /&gt;
&lt;br /&gt;
[[Image:Builder2.png]]&lt;br /&gt;
Source: [http://en.wikipedia.org/wiki/Builder_pattern]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Prototype Pattern ===&lt;br /&gt;
The Prototype pattern creates a new object by cloning an existing object. The client using the prototype object does not need to know what kind of object it is dealing with as long as the concrete prototype extends or implements the prototype interface/class. The concrete prototype object is responsible for cloning itself and returning the cloned object.&lt;br /&gt;
The pattern enables a client to create the kind of object required at runtime by selecting the appropriate prototype. The prototype classes are created generically by the client without the client knowing the exact type of the concrete prototype. New concrete prototypes can be added at runtime as long as they conform to the abstract prototype.&lt;br /&gt;
&lt;br /&gt;
[[Image:prototype.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Abstract Factory Pattern ===&lt;br /&gt;
Abstract pattern is one level of abstraction higher than the factory pattern.&lt;br /&gt;
A Factory pattern is one that returns an instance of one of several possible classes depending on the data provided to it.&lt;br /&gt;
Usually all of the classes it returns have a common parent class and common methods, but each of them performs a task differently and is optimized for different kinds of data.&lt;br /&gt;
&lt;br /&gt;
There are several similar variations on the factory pattern:&lt;br /&gt;
  1. The base class is abstract and the pattern must return a complete working class. &lt;br /&gt;
  2. The base class contains default methods and is only sub-classed for cases where the default methods are insufficient.&lt;br /&gt;
  3. Parameters are passed to the factory telling it which of several class types to return. In this case the classes may share&lt;br /&gt;
     the same method names but may do something quite different.&lt;br /&gt;
&lt;br /&gt;
[[Image:abstractfactory.gif]]&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28166</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28166"/>
		<updated>2009-11-18T05:41:13Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* Examples of Factory Pattern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.It Provide an interface for creating families of related or dependent objects without specifying their concrete classes.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This topic deals with the Factory method design pattern.It explains Factory design pattern and compares with other creational pattern to highlight the uniqueness and distinguishing features of the pattern.It also gives examples of where factory design pattern is used and scenarios wherein its more suitable than other creational patterns.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Factory Patterns Insight ===&lt;br /&gt;
&lt;br /&gt;
Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.It means that Factory is written without knowing what actual sub class will be instantiated. The subclass which is instantiated is determined solely by which subclass is instantiated and used by the application.&lt;br /&gt;
&lt;br /&gt;
Factory method framework can be shown in the figure below.In the below figure the createDocument() method is a factory method.  &lt;br /&gt;
[[Image:fac.jpg]]&lt;br /&gt;
&lt;br /&gt;
Benefits&lt;br /&gt;
Code is made more flexible and reusable by the elimination of instantiation of application-specific classes,Code deals only with the interface of the Factory class and can work with any sub class that supports this interface&lt;br /&gt;
&lt;br /&gt;
=== Applicants of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
=== Examples of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
Factory design pattern can be explained by the following example. This example involves factory class called Mammals and it involves calling objects cat and dog with out actually creating an object for cat and dog class.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 public class MammalsFactory {&lt;br /&gt;
    public static Mammals getMammalObject(String name) {&lt;br /&gt;
       if (name.equalsIgnoreCase(&amp;quot;Cat&amp;quot;)){&lt;br /&gt;
          return new Cat();&lt;br /&gt;
       } else {&lt;br /&gt;
          return new Dog();&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Here we will be passing an argument to the getMammalObject function based on the argument passed we return the Mammals object of the class.&lt;br /&gt;
&lt;br /&gt;
 public abstract class Mammals {&lt;br /&gt;
       public abstract String doWalking();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Builder Pattern ===&lt;br /&gt;
In Factory pattern, the factory is in charge of creating various subtypes of an object depending on the needs.&lt;br /&gt;
 &lt;br /&gt;
Where as in Builder pattern, the composition of the objects might differ within the same subclass.&lt;br /&gt;
&lt;br /&gt;
An example of a Factory method CarCreate might return a Audi or a Toyota where as in the same scenario if we are using a Builder pattern, it allows us to create objects with finer granularity like specifying different engine specifications (a 4 cylinder engine or a 6 cylinder engine)for the objects.&lt;br /&gt;
As seen from the above example the Factory pattern is a simpler version of the Builder Pattern.&lt;br /&gt;
&lt;br /&gt;
UML diagram of Builder Pattern&lt;br /&gt;
&lt;br /&gt;
[[Image:Builder2.png]]&lt;br /&gt;
Source: [http://en.wikipedia.org/wiki/Builder_pattern]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Prototype Pattern ===&lt;br /&gt;
The Prototype pattern creates a new object by cloning an existing object. The client using the prototype object does not need to know what kind of object it is dealing with as long as the concrete prototype extends or implements the prototype interface/class. The concrete prototype object is responsible for cloning itself and returning the cloned object.&lt;br /&gt;
The pattern enables a client to create the kind of object required at runtime by selecting the appropriate prototype. The prototype classes are created generically by the client without the client knowing the exact type of the concrete prototype. New concrete prototypes can be added at runtime as long as they conform to the abstract prototype.&lt;br /&gt;
&lt;br /&gt;
[[Image:prototype.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Abstract Factory Pattern ===&lt;br /&gt;
Abstract pattern is one level of abstraction higher than the factory pattern.&lt;br /&gt;
A Factory pattern is one that returns an instance of one of several possible classes depending on the data provided to it.&lt;br /&gt;
Usually all of the classes it returns have a common parent class and common methods, but each of them performs a task differently and is optimized for different kinds of data.&lt;br /&gt;
&lt;br /&gt;
There are several similar variations on the factory pattern:&lt;br /&gt;
  1. The base class is abstract and the pattern must return a complete working class. &lt;br /&gt;
  2. The base class contains default methods and is only sub-classed for cases where the default methods are insufficient.&lt;br /&gt;
  3. Parameters are passed to the factory telling it which of several class types to return. In this case the classes may share&lt;br /&gt;
     the same method names but may do something quite different.&lt;br /&gt;
&lt;br /&gt;
[[Image:abstractfactory.gif]]&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28164</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28164"/>
		<updated>2009-11-18T05:38:24Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* Examples of Factory Pattern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.It Provide an interface for creating families of related or dependent objects without specifying their concrete classes.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This topic deals with the Factory method design pattern.It explains Factory design pattern and compares with other creational pattern to highlight the uniqueness and distinguishing features of the pattern.It also gives examples of where factory design pattern is used and scenarios wherein its more suitable than other creational patterns.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Factory Patterns Insight ===&lt;br /&gt;
&lt;br /&gt;
Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.It means that Factory is written without knowing what actual sub class will be instantiated. The subclass which is instantiated is determined solely by which subclass is instantiated and used by the application.&lt;br /&gt;
&lt;br /&gt;
Factory method framework can be shown in the figure below.In the below figure the createDocument() method is a factory method.  &lt;br /&gt;
[[Image:fac.jpg]]&lt;br /&gt;
&lt;br /&gt;
Benefits&lt;br /&gt;
Code is made more flexible and reusable by the elimination of instantiation of application-specific classes,Code deals only with the interface of the Factory class and can work with any sub class that supports this interface&lt;br /&gt;
&lt;br /&gt;
=== Applicants of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
=== Examples of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
Factory design pattern can be explained by the following example. This example involves factory class called Mammals and it involves calling objects cat and dog with out actually creating an object for cat and dog class.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 public class MammalsFactory {&lt;br /&gt;
    public static Mammals getMammalObject(String name) {&lt;br /&gt;
       if (name.equalsIgnoreCase(&amp;quot;Cat&amp;quot;)){&lt;br /&gt;
          return new Cat();&lt;br /&gt;
       } else {&lt;br /&gt;
          return new Dog();&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Builder Pattern ===&lt;br /&gt;
In Factory pattern, the factory is in charge of creating various subtypes of an object depending on the needs.&lt;br /&gt;
 &lt;br /&gt;
Where as in Builder pattern, the composition of the objects might differ within the same subclass.&lt;br /&gt;
&lt;br /&gt;
An example of a Factory method CarCreate might return a Audi or a Toyota where as in the same scenario if we are using a Builder pattern, it allows us to create objects with finer granularity like specifying different engine specifications (a 4 cylinder engine or a 6 cylinder engine)for the objects.&lt;br /&gt;
As seen from the above example the Factory pattern is a simpler version of the Builder Pattern.&lt;br /&gt;
&lt;br /&gt;
UML diagram of Builder Pattern&lt;br /&gt;
&lt;br /&gt;
[[Image:Builder2.png]]&lt;br /&gt;
Source: [http://en.wikipedia.org/wiki/Builder_pattern]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Prototype Pattern ===&lt;br /&gt;
The Prototype pattern creates a new object by cloning an existing object. The client using the prototype object does not need to know what kind of object it is dealing with as long as the concrete prototype extends or implements the prototype interface/class. The concrete prototype object is responsible for cloning itself and returning the cloned object.&lt;br /&gt;
The pattern enables a client to create the kind of object required at runtime by selecting the appropriate prototype. The prototype classes are created generically by the client without the client knowing the exact type of the concrete prototype. New concrete prototypes can be added at runtime as long as they conform to the abstract prototype.&lt;br /&gt;
&lt;br /&gt;
[[Image:prototype.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Abstract Factory Pattern ===&lt;br /&gt;
Abstract pattern is one level of abstraction higher than the factory pattern.&lt;br /&gt;
A Factory pattern is one that returns an instance of one of several possible classes depending on the data provided to it.&lt;br /&gt;
Usually all of the classes it returns have a common parent class and common methods, but each of them performs a task differently and is optimized for different kinds of data.&lt;br /&gt;
&lt;br /&gt;
There are several similar variations on the factory pattern:&lt;br /&gt;
  1. The base class is abstract and the pattern must return a complete working class. &lt;br /&gt;
  2. The base class contains default methods and is only sub-classed for cases where the default methods are insufficient.&lt;br /&gt;
  3. Parameters are passed to the factory telling it which of several class types to return. In this case the classes may share&lt;br /&gt;
     the same method names but may do something quite different.&lt;br /&gt;
&lt;br /&gt;
[[Image:abstractfactory.gif]]&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28101</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28101"/>
		<updated>2009-11-18T05:07:28Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* Definition */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.It Provide an interface for creating families of related or dependent objects without specifying their concrete classes.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This topic deals with the Factory method design pattern.It explains Factory design pattern and compares with other creational pattern to highlight the uniqueness and distinguishing features of the pattern.It also gives examples of where factory design pattern is used and scenarios wherein its more suitable than other creational patterns.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Factory Patterns Insight ===&lt;br /&gt;
&lt;br /&gt;
Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.It means that Factory is written without knowing what actual sub class will be instantiated. The subclass which is instantiated is determined solely by which subclass is instantiated and used by the application.&lt;br /&gt;
&lt;br /&gt;
Factory method framework can be shown in the figure below.In the below figure the createDocument() method is a factory method.  &lt;br /&gt;
[[Image:fac.jpg]]&lt;br /&gt;
&lt;br /&gt;
Benefits&lt;br /&gt;
Code is made more flexible and reusable by the elimination of instantiation of application-specific classes,Code deals only with the interface of the Factory class and can work with any sub class that supports this interface&lt;br /&gt;
&lt;br /&gt;
=== Applicants of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
=== Examples of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Builder Pattern ===&lt;br /&gt;
In Factory pattern, the factory is in charge of creating various subtypes of an object depending on the needs.&lt;br /&gt;
 &lt;br /&gt;
Where as in Builder pattern, the composition of the objects might differ within the same subclass.&lt;br /&gt;
&lt;br /&gt;
An example of a Factory method CarCreate might return a Audi or a Toyota where as in the same scenario if we are using a Builder pattern, it allows us to create objects with finer granularity like specifying different engine specifications (a 4 cylinder engine or a 6 cylinder engine)for the objects.&lt;br /&gt;
As seen from the above example the Factory pattern is a simpler version of the Builder Pattern.&lt;br /&gt;
&lt;br /&gt;
UML diagram of Builder Pattern&lt;br /&gt;
&lt;br /&gt;
[[Image:Builder2.png]]&lt;br /&gt;
Source: [http://en.wikipedia.org/wiki/Builder_pattern]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Prototype Pattern ===&lt;br /&gt;
The Prototype pattern creates a new object by cloning an existing object. The client using the prototype object does not need to know what kind of object it is dealing with as long as the concrete prototype extends or implements the prototype interface/class. The concrete prototype object is responsible for cloning itself and returning the cloned object.&lt;br /&gt;
The pattern enables a client to create the kind of object required at runtime by selecting the appropriate prototype. The prototype classes are created generically by the client without the client knowing the exact type of the concrete prototype. New concrete prototypes can be added at runtime as long as they conform to the abstract prototype.&lt;br /&gt;
&lt;br /&gt;
[[Image:prototype.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Abstract Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:abstractfactory.gif]]&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28100</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28100"/>
		<updated>2009-11-18T05:07:04Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* Factory Patterns Insight */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.It Provide an interface for creating families of related or dependent objects without specifying their concrete classes.&lt;br /&gt;
&lt;br /&gt;
A small analogy to understand Factory method better. Your code is the pasta maker,different disks create different pasta shapes:these are the factories. All disks have certain properties in common,so that they will work with the pasta maker.All pastas have certain characteristics in common that are inherited from the generic “Pasta” object.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This topic deals with the Factory method design pattern.It explains Factory design pattern and compares with other creational pattern to highlight the uniqueness and distinguishing features of the pattern.It also gives examples of where factory design pattern is used and scenarios wherein its more suitable than other creational patterns.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Factory Patterns Insight ===&lt;br /&gt;
&lt;br /&gt;
Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.It means that Factory is written without knowing what actual sub class will be instantiated. The subclass which is instantiated is determined solely by which subclass is instantiated and used by the application.&lt;br /&gt;
&lt;br /&gt;
Factory method framework can be shown in the figure below.In the below figure the createDocument() method is a factory method.  &lt;br /&gt;
[[Image:fac.jpg]]&lt;br /&gt;
&lt;br /&gt;
Benefits&lt;br /&gt;
Code is made more flexible and reusable by the elimination of instantiation of application-specific classes,Code deals only with the interface of the Factory class and can work with any sub class that supports this interface&lt;br /&gt;
&lt;br /&gt;
=== Applicants of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
=== Examples of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Builder Pattern ===&lt;br /&gt;
In Factory pattern, the factory is in charge of creating various subtypes of an object depending on the needs.&lt;br /&gt;
 &lt;br /&gt;
Where as in Builder pattern, the composition of the objects might differ within the same subclass.&lt;br /&gt;
&lt;br /&gt;
An example of a Factory method CarCreate might return a Audi or a Toyota where as in the same scenario if we are using a Builder pattern, it allows us to create objects with finer granularity like specifying different engine specifications (a 4 cylinder engine or a 6 cylinder engine)for the objects.&lt;br /&gt;
As seen from the above example the Factory pattern is a simpler version of the Builder Pattern.&lt;br /&gt;
&lt;br /&gt;
UML diagram of Builder Pattern&lt;br /&gt;
&lt;br /&gt;
[[Image:Builder2.png]]&lt;br /&gt;
Source: [http://en.wikipedia.org/wiki/Builder_pattern]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Prototype Pattern ===&lt;br /&gt;
The Prototype pattern creates a new object by cloning an existing object. The client using the prototype object does not need to know what kind of object it is dealing with as long as the concrete prototype extends or implements the prototype interface/class. The concrete prototype object is responsible for cloning itself and returning the cloned object.&lt;br /&gt;
The pattern enables a client to create the kind of object required at runtime by selecting the appropriate prototype. The prototype classes are created generically by the client without the client knowing the exact type of the concrete prototype. New concrete prototypes can be added at runtime as long as they conform to the abstract prototype.&lt;br /&gt;
&lt;br /&gt;
[[Image:prototype.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Abstract Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:abstractfactory.gif]]&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28094</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28094"/>
		<updated>2009-11-18T05:04:13Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* Factory Patterns Insight */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.It Provide an interface for creating families of related or dependent objects without specifying their concrete classes.&lt;br /&gt;
&lt;br /&gt;
A small analogy to understand Factory method better. Your code is the pasta maker,different disks create different pasta shapes:these are the factories. All disks have certain properties in common,so that they will work with the pasta maker.All pastas have certain characteristics in common that are inherited from the generic “Pasta” object.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This topic deals with the Factory method design pattern.It explains Factory design pattern and compares with other creational pattern to highlight the uniqueness and distinguishing features of the pattern.It also gives examples of where factory design pattern is used and scenarios wherein its more suitable than other creational patterns.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Factory Patterns Insight ===&lt;br /&gt;
&lt;br /&gt;
Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.It means that Factory is written without knowing what actual sub class will be instantiated. The subclass which is instantiated is determined solely by which subclass is instantiated and used by the application.&lt;br /&gt;
&lt;br /&gt;
Factory method framework can be shown in the figure below.In the below figure the createDocument() method is a factory method.  &lt;br /&gt;
[[Image:fac.jpg]]&lt;br /&gt;
&lt;br /&gt;
Benefits&lt;br /&gt;
Code is made more flexible and reusable by the elimination of instantiation of application-specific classes&lt;br /&gt;
Code deals only with the interface of the Product class and can work with any&lt;br /&gt;
ConcreteProduct class that supports this interface&lt;br /&gt;
&lt;br /&gt;
=== Applicants of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
=== Examples of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Builder Pattern ===&lt;br /&gt;
In Factory pattern, the factory is in charge of creating various subtypes of an object depending on the needs.&lt;br /&gt;
 &lt;br /&gt;
Where as in Builder pattern, the composition of the objects might differ within the same subclass.&lt;br /&gt;
&lt;br /&gt;
An example of a Factory method CarCreate might return a Audi or a Toyota where as in the same scenario if we are using a Builder pattern, it allows us to create objects with finer granularity like specifying different engine specifications (a 4 cylinder engine or a 6 cylinder engine)for the objects.&lt;br /&gt;
As seen from the above example the Factory pattern is a simpler version of the Builder Pattern.&lt;br /&gt;
&lt;br /&gt;
UML diagram of Builder Pattern&lt;br /&gt;
&lt;br /&gt;
[[Image:Builder2.png]]&lt;br /&gt;
Source: [http://en.wikipedia.org/wiki/Builder_pattern]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Prototype Pattern ===&lt;br /&gt;
The Prototype pattern creates a new object by cloning an existing object. The client using the prototype object does not need to know what kind of object it is dealing with as long as the concrete prototype extends or implements the prototype interface/class. The concrete prototype object is responsible for cloning itself and returning the cloned object.&lt;br /&gt;
The pattern enables a client to create the kind of object required at runtime by selecting the appropriate prototype. The prototype classes are created generically by the client without the client knowing the exact type of the concrete prototype. New concrete prototypes can be added at runtime as long as they conform to the abstract prototype.&lt;br /&gt;
&lt;br /&gt;
[[Image:prototype.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Abstract Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:abstractfactory.gif]]&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28077</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28077"/>
		<updated>2009-11-18T04:56:23Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* Factory Patterns Insight */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.It Provide an interface for creating families of related or dependent objects without specifying their concrete classes.&lt;br /&gt;
&lt;br /&gt;
A small analogy to understand Factory method better. Your code is the pasta maker,different disks create different pasta shapes:these are the factories. All disks have certain properties in common,so that they will work with the pasta maker.All pastas have certain characteristics in common that are inherited from the generic “Pasta” object.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This topic deals with the Factory method design pattern.It explains Factory design pattern and compares with other creational pattern to highlight the uniqueness and distinguishing features of the pattern.It also gives examples of where factory design pattern is used and scenarios wherein its more suitable than other creational patterns.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Factory Patterns Insight ===&lt;br /&gt;
&lt;br /&gt;
Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.It means that Super class is written without knowing what actual sub class will be instantiated. The subclass which is instantiated is determined solely by which subclass is instantiated and used by the application.&lt;br /&gt;
&lt;br /&gt;
Factory method framework can be shown in the figure below.In the below figure the createDocument() method is a factory method.  &lt;br /&gt;
[[Image:fac.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Applicants of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
=== Examples of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Builder Pattern ===&lt;br /&gt;
In Factory pattern, the factory is in charge of creating various subtypes of an object depending on the needs.&lt;br /&gt;
 &lt;br /&gt;
Where as in Builder pattern, the composition of the objects might differ within the same subclass.&lt;br /&gt;
&lt;br /&gt;
An example of a Factory method CarCreate might return a Audi or a Toyota where as in the same scenario if we are using a Builder pattern, it allows us to create objects with finer granularity like specifying different engine specifications (a 4 cylinder engine or a 6 cylinder engine)for the objects.&lt;br /&gt;
As seen from the above example the Factory pattern is a simpler version of the Builder Pattern.&lt;br /&gt;
&lt;br /&gt;
UML diagram of Builder Pattern&lt;br /&gt;
&lt;br /&gt;
[[Image:Builder2.png]]&lt;br /&gt;
Source: [http://en.wikipedia.org/wiki/Builder_pattern]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Prototype Pattern ===&lt;br /&gt;
The Prototype pattern creates a new object by cloning an existing object. The client using the prototype object does not need to know what kind of object it is dealing with as long as the concrete prototype extends or implements the prototype interface/class. The concrete prototype object is responsible for cloning itself and returning the cloned object.&lt;br /&gt;
The pattern enables a client to create the kind of object required at runtime by selecting the appropriate prototype. The prototype classes are created generically by the client without the client knowing the exact type of the concrete prototype. New concrete prototypes can be added at runtime as long as they conform to the abstract prototype.&lt;br /&gt;
&lt;br /&gt;
[[Image:prototype.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Abstract Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28066</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28066"/>
		<updated>2009-11-18T04:53:32Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* Factory Patterns Insight */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.It Provide an interface for creating families of related or dependent objects without specifying their concrete classes.&lt;br /&gt;
&lt;br /&gt;
A small analogy to understand Factory method better. Your code is the pasta maker,different disks create different pasta shapes:these are the factories. All disks have certain properties in common,so that they will work with the pasta maker.All pastas have certain characteristics in common that are inherited from the generic “Pasta” object.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This topic deals with the Factory method design pattern.It explains Factory design pattern and compares with other creational pattern to highlight the uniqueness and distinguishing features of the pattern.It also gives examples of where factory design pattern is used and scenarios wherein its more suitable than other creational patterns.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Factory Patterns Insight ===&lt;br /&gt;
&lt;br /&gt;
Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.&lt;br /&gt;
&lt;br /&gt;
Factory method framework can be shown in the figure below.In the below figure the createDocument() method is a factory method.  &lt;br /&gt;
[[Image:fac.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Applicants of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
=== Examples of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Builder Pattern ===&lt;br /&gt;
In Factory pattern, the factory is in charge of creating various subtypes of an object depending on the needs.&lt;br /&gt;
 &lt;br /&gt;
Where as in Builder pattern, the composition of the objects might differ within the same subclass.&lt;br /&gt;
&lt;br /&gt;
An example of a Factory method CarCreate might return a Audi or a Toyota where as in the same scenario if we are using a Builder pattern, it allows us to create objects with finer granularity like specifying different engine specifications (a 4 cylinder engine or a 6 cylinder engine)for the objects.&lt;br /&gt;
As seen from the above example the Factory pattern is a simpler version of the Builder Pattern.&lt;br /&gt;
&lt;br /&gt;
UML diagram of Builder Pattern&lt;br /&gt;
&lt;br /&gt;
[[Image:Builder2.png]]&lt;br /&gt;
Source: [http://en.wikipedia.org/wiki/Builder_pattern]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Prototype Pattern ===&lt;br /&gt;
[[Image:prototype.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Abstract Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Fac.jpg&amp;diff=28065</id>
		<title>File:Fac.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Fac.jpg&amp;diff=28065"/>
		<updated>2009-11-18T04:50:43Z</updated>

		<summary type="html">&lt;p&gt;Beacon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28064</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28064"/>
		<updated>2009-11-18T04:50:24Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* Factory Patterns Insight */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.It Provide an interface for creating families of related or dependent objects without specifying their concrete classes.&lt;br /&gt;
&lt;br /&gt;
A small analogy to understand Factory method better. Your code is the pasta maker,different disks create different pasta shapes:these are the factories. All disks have certain properties in common,so that they will work with the pasta maker.All pastas have certain characteristics in common that are inherited from the generic “Pasta” object.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This topic deals with the Factory method design pattern.It explains Factory design pattern and compares with other creational pattern to highlight the uniqueness and distinguishing features of the pattern.It also gives examples of where factory design pattern is used and scenarios wherein its more suitable than other creational patterns.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Factory Patterns Insight ===&lt;br /&gt;
&lt;br /&gt;
Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.&lt;br /&gt;
&lt;br /&gt;
[[Image:fac.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Applicants of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
=== Examples of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Builder Pattern ===&lt;br /&gt;
In Factory pattern, the factory is in charge of creating various subtypes of an object depending on the needs.&lt;br /&gt;
 &lt;br /&gt;
Where as in Builder pattern, the composition of the objects might differ within the same subclass.&lt;br /&gt;
&lt;br /&gt;
An example of a Factory method CarCreate might return a Audi or a Toyota where as in the same scenario if we are using a Builder pattern, it allows us to create objects with finer granularity like specifying different engine specifications (a 4 cylinder engine or a 6 cylinder engine)for the objects.&lt;br /&gt;
As seen from the above example the Factory pattern is a simpler version of the Builder Pattern.&lt;br /&gt;
&lt;br /&gt;
UML diagram of Builder Pattern&lt;br /&gt;
&lt;br /&gt;
[[Image:Builder2.png]]&lt;br /&gt;
Source: [http://en.wikipedia.org/wiki/Builder_pattern]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Prototype Pattern ===&lt;br /&gt;
[[Image:prototype.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Abstract Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28059</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28059"/>
		<updated>2009-11-18T04:40:02Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* In Depth Analysis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.It Provide an interface for creating families of related or dependent objects without specifying their concrete classes.&lt;br /&gt;
&lt;br /&gt;
A small analogy to understand Factory method better. Your code is the pasta maker,Different disks create different pasta shapes:these are the factories,All disks have certain properties in common,so that they will work with the pasta maker.All pastas have certain characteristics in common that are inherited from the generic “Pasta” object.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This topic deals with the Factory method design pattern.It explains Factory design pattern and compares with other creational pattern to highlight the uniqueness and distinguishing features of the pattern.It also gives examples of where factory design pattern is used and scenarios wherein its more suitable than other creational patterns.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Factory Patterns Insight ===&lt;br /&gt;
&lt;br /&gt;
=== Applicants of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
=== Examples of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Builder Pattern ===&lt;br /&gt;
In Factory pattern, the factory is in charge of creating various subtypes of an object depending on the needs.&lt;br /&gt;
 &lt;br /&gt;
Where as in Builder pattern, the composition of the objects might differ within the same subclass.&lt;br /&gt;
&lt;br /&gt;
An example of a Factory method CarCreate might return a Audi or a Toyota where as in the same scenario if we are using a Builder pattern, it allows us to create objects with finer granularity like specifying different engine specifications (a 4 cylinder engine or a 6 cylinder engine)for the objects.&lt;br /&gt;
As seen from the above example the Factory pattern is a simpler version of the Builder Pattern.&lt;br /&gt;
&lt;br /&gt;
UML diagram of Builder Pattern&lt;br /&gt;
&lt;br /&gt;
[[Image:Builder2.png]]&lt;br /&gt;
Source: [http://en.wikipedia.org/wiki/Builder_pattern]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Prototype Pattern ===&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Abstract Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28058</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28058"/>
		<updated>2009-11-18T04:38:46Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* In depth Analysis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.It Provide an interface for creating families of related or dependent objects without specifying their concrete classes.&lt;br /&gt;
&lt;br /&gt;
A small analogy to understand Factory method better. Your code is the pasta maker,Different disks create different pasta shapes:these are the factories,All disks have certain properties in common,so that they will work with the pasta maker.All pastas have certain characteristics in common that are inherited from the generic “Pasta” object.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This topic deals with the Factory method design pattern.It explains Factory design pattern and compares with other creational pattern to highlight the uniqueness and distinguishing features of the pattern.It also gives examples of where factory design pattern is used and scenarios wherein its more suitable than other creational patterns.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Factory Patterns Insight ===&lt;br /&gt;
&lt;br /&gt;
=== Applicants of Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
=== Examples of Factory Pattern ==&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Builder Pattern ===&lt;br /&gt;
In Factory pattern, the factory is in charge of creating various subtypes of an object depending on the needs.&lt;br /&gt;
 &lt;br /&gt;
Where as in Builder pattern, the composition of the objects might differ within the same subclass.&lt;br /&gt;
&lt;br /&gt;
An example of a Factory method CarCreate might return a Audi or a Toyota where as in the same scenario if we are using a Builder pattern, it allows us to create objects with finer granularity like specifying different engine specifications (a 4 cylinder engine or a 6 cylinder engine)for the objects.&lt;br /&gt;
As seen from the above example the Factory pattern is a simpler version of the Builder Pattern.&lt;br /&gt;
&lt;br /&gt;
UML diagram of Builder Pattern&lt;br /&gt;
&lt;br /&gt;
[[Image:Builder2.png]]&lt;br /&gt;
Source: [http://en.wikipedia.org/wiki/Builder_pattern]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Prototype Pattern ===&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Abstract Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28051</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28051"/>
		<updated>2009-11-18T04:32:54Z</updated>

		<summary type="html">&lt;p&gt;Beacon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.It Provide an interface for creating families of related or dependent objects without specifying their concrete classes.&lt;br /&gt;
&lt;br /&gt;
A small analogy to understand Factory method better. Your code is the pasta maker,Different disks create different pasta shapes:these are the factories,All disks have certain properties in common,so that they will work with the pasta maker.All pastas have certain characteristics in common that are inherited from the generic “Pasta” object.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This topic deals with the Factory method design pattern.It explains Factory design pattern and compares with other creational pattern to highlight the uniqueness and distinguishing features of the pattern.It also gives examples of where factory design pattern is used and scenarios wherein its more suitable than other creational patterns.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Builder Pattern ===&lt;br /&gt;
In Factory pattern, the factory is in charge of creating various subtypes of an object depending on the needs.&lt;br /&gt;
 &lt;br /&gt;
Where as in Builder pattern, the composition of the objects might differ within the same subclass.&lt;br /&gt;
&lt;br /&gt;
An example of a Factory method CarCreate might return a Audi or a Toyota where as in the same scenario if we are using a Builder pattern, it allows us to create objects with finer granularity like specifying different engine specifications (a 4 cylinder engine or a 6 cylinder engine)for the objects.&lt;br /&gt;
As seen from the above example the Factory pattern is a simpler version of the Builder Pattern.&lt;br /&gt;
&lt;br /&gt;
UML diagram of Builder Pattern&lt;br /&gt;
&lt;br /&gt;
[[Image:Builder2.png]]&lt;br /&gt;
Source: [http://en.wikipedia.org/wiki/Builder_pattern]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Prototype Pattern ===&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Abstract Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28033</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28033"/>
		<updated>2009-11-18T04:25:23Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* Definition */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.It Provide an interface for creating families of related or dependent objects without specifying their concrete classes.&lt;br /&gt;
&lt;br /&gt;
A small analogy to understand Factory method better. Your code is the pasta maker,Different disks create different pasta shapes:these are the factories,All disks have certain properties in common,so that they will work with the pasta maker.All pastas have certain characteristics in common that are inherited from the generic “Pasta” object.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This topic deals with the Factory method design pattern.It explains Factory design pattern and compares with other creational pattern to highlight the uniqueness and distinguishing features of the pattern.It also gives examples of where factory design pattern is used and scenarios wherein its more suitable than other creational patterns.&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Builder Pattern ===&lt;br /&gt;
In Factory pattern, the factory is in charge of creating various subtypes of an object depending on the needs.&lt;br /&gt;
 &lt;br /&gt;
Where as in Builder pattern, the composition of the objects might differ within the same subclass.&lt;br /&gt;
&lt;br /&gt;
An example of a Factory method CarCreate might return a Audi or a Toyota where as in the same scenario if we are using a Builder pattern, it allows us to create objects with finer granularity like specifying different engine specifications (a 4 cylinder engine or a 6 cylinder engine)for the objects.&lt;br /&gt;
As seen from the above example the Factory pattern is a simpler version of the Builder Pattern.&lt;br /&gt;
&lt;br /&gt;
UML diagram of Builder Pattern&lt;br /&gt;
&lt;br /&gt;
[[Image:Builder2.png]]&lt;br /&gt;
Source: [http://en.wikipedia.org/wiki/Builder_pattern]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Prototype Pattern ===&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Abstract Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
== In depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28015</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28015"/>
		<updated>2009-11-18T04:11:28Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* Comparison with other Creational Patterns */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This topic deals with the Factory method design pattern.It explains Factory design pattern and compares with other creational pattern to highlight the uniqueness and distinguishing features of the pattern.It also gives examples of where factory design pattern is used and scenarios wherein its more suitable than other creational patterns.&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Builder Pattern ===&lt;br /&gt;
In Factory pattern, the factory is in charge of creating various subtypes of an object depending on the needs.&lt;br /&gt;
 &lt;br /&gt;
Where as in Builder pattern, the composition of the objects might differ within the same subclass.&lt;br /&gt;
&lt;br /&gt;
An example of a Factory method CarCreate might return a Audi or a Toyota where as in the same scenario if we are using a Builder pattern, it allows us to create objects with finer granularity like specifying different engine specifications (a 4 cylinder engine or a 6 cylinder engine)for the objects.&lt;br /&gt;
As seen from the above example the Factory pattern is a simpler version of the Builder Pattern.&lt;br /&gt;
&lt;br /&gt;
UML diagram of Builder Pattern&lt;br /&gt;
&lt;br /&gt;
[[Image:Builder2.png]]&lt;br /&gt;
Source: [http://en.wikipedia.org/wiki/Builder_pattern]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Prototype Pattern ===&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Abstract Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
== In depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28012</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28012"/>
		<updated>2009-11-18T04:10:32Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* Comparison with Builder Pattern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This topic deals with the Factory method design pattern.It explains Factory design pattern and compares with other creational pattern to highlight the uniqueness and distinguishing features of the pattern.It also gives examples of where factory design pattern is used and scenarios wherein its more suitable than other creational patterns.&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Singleton Pattern ===&lt;br /&gt;
&lt;br /&gt;
Singleton pattern is a creational pattern which is used in situations where just only one object of the class has to be created.&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Builder Pattern ===&lt;br /&gt;
In Factory pattern, the factory is in charge of creating various subtypes of an object depending on the needs.&lt;br /&gt;
 &lt;br /&gt;
Where as in Builder pattern, the composition of the objects might differ within the same subclass.&lt;br /&gt;
&lt;br /&gt;
An example of a Factory method CarCreate might return a Audi or a Toyota where as in the same scenario if we are using a Builder pattern, it allows us to create objects with finer granularity like specifying different engine specifications (a 4 cylinder engine or a 6 cylinder engine)for the objects.&lt;br /&gt;
As seen from the above example the Factory pattern is a simpler version of the Builder Pattern.&lt;br /&gt;
&lt;br /&gt;
UML diagram of Builder Pattern&lt;br /&gt;
&lt;br /&gt;
[[Image:Builder2.png]]&lt;br /&gt;
Source: [http://en.wikipedia.org/wiki/Builder_pattern]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Prototype Pattern ===&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Abstract Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
== In depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28008</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28008"/>
		<updated>2009-11-18T04:09:32Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* Comparison with Builder Pattern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This topic deals with the Factory method design pattern.It explains Factory design pattern and compares with other creational pattern to highlight the uniqueness and distinguishing features of the pattern.It also gives examples of where factory design pattern is used and scenarios wherein its more suitable than other creational patterns.&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Singleton Pattern ===&lt;br /&gt;
&lt;br /&gt;
Singleton pattern is a creational pattern which is used in situations where just only one object of the class has to be created.&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Builder Pattern ===&lt;br /&gt;
In Factory pattern, the factory is in charge of creating various subtypes of an object depending on the needs.&lt;br /&gt;
 &lt;br /&gt;
Where as in Builder pattern, the composition of the objects might differ within the same subclass.&lt;br /&gt;
&lt;br /&gt;
An example of a Factory method CarCreate might return a Audi or a Toyota where as in the same scenario if we are using a Builder pattern, it allows us to create objects with finer granularity like specifying different engine specifications (a 4 cylinder engine or a 6 cylinder engine)for the objects.&lt;br /&gt;
As seen from the above example the Factory pattern is a simpler version of the Builder Pattern.&lt;br /&gt;
&lt;br /&gt;
[[Image:Builder2.png]]&lt;br /&gt;
Source: [http://en.wikipedia.org/wiki/Builder_pattern]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Prototype Pattern ===&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Abstract Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
== In depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28005</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=28005"/>
		<updated>2009-11-18T04:08:03Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* Comparison with Builder Pattern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This topic deals with the Factory method design pattern.It explains Factory design pattern and compares with other creational pattern to highlight the uniqueness and distinguishing features of the pattern.It also gives examples of where factory design pattern is used and scenarios wherein its more suitable than other creational patterns.&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Singleton Pattern ===&lt;br /&gt;
&lt;br /&gt;
Singleton pattern is a creational pattern which is used in situations where just only one object of the class has to be created.&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Builder Pattern ===&lt;br /&gt;
In Factory pattern, the factory is in charge of creating various subtypes of an object depending on the needs.&lt;br /&gt;
 &lt;br /&gt;
Where as in Builder pattern, the composition of the objects might differ within the same subclass.&lt;br /&gt;
&lt;br /&gt;
An example of a Factory method CarCreate might return a Audi or a Toyota where as in the same scenario if we are using a Builder pattern, it allows us to create objects with finer granularity like specifying different engine specifications (a 4 cylinder engine or a 6 cylinder engine)for the objects.&lt;br /&gt;
As seen from the above example the Factory pattern is a simpler version of the Builder Pattern.&lt;br /&gt;
&lt;br /&gt;
[[Image:Builder2.png]]&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Prototype Pattern ===&lt;br /&gt;
&lt;br /&gt;
=== Comparison with Abstract Factory Pattern ===&lt;br /&gt;
&lt;br /&gt;
== In depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Builder2.png&amp;diff=28004</id>
		<title>File:Builder2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Builder2.png&amp;diff=28004"/>
		<updated>2009-11-18T04:07:00Z</updated>

		<summary type="html">&lt;p&gt;Beacon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=27948</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=27948"/>
		<updated>2009-11-18T03:37:46Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This topic deals with the Factory method design pattern.It explains Factory design pattern and compares with other creational pattern to highlight the uniqueness and distinguishing features of the pattern.It also gives examples of where factory design pattern is used and scenarios wherein its more suitable than other creational patterns.&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=27942</id>
		<title>CSC/ECE 517 Fall 2009/wiki3 16 AD</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki3_16_AD&amp;diff=27942"/>
		<updated>2009-11-18T03:29:41Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* Definition */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Definition ==&lt;br /&gt;
&lt;br /&gt;
Factory Method is a creational pattern. This pattern helps to model an interface for creating an object which at creation time can let its subclasses decide which class to instantiate.It is called as Factory Pattern as it is responsible for &amp;quot;Manufacturing&amp;quot; an Object. It helps instantiate the appropriate Subclass by creating the right Object from a group of related classes. The Factory Pattern encourages loose coupling by eliminating the need to bind application-specific classes into the code.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comparison with other Creational Patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In depth Analysis ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== External Links and References ==&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=26132</id>
		<title>CSC/ECE 517 Fall 2009/wiki2 8 RP</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=26132"/>
		<updated>2009-10-14T23:10:49Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* '''Reflection''' */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&amp;lt;font size=4&amp;gt;Reflection Oriented Programming'''&amp;lt;/font&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This wiki throws light on what '''Reflection Oriented programming''' is all about. It deals with the need for such dynamic aspect and how it is useful in satisfying the practical needs. It further highlights the importance and the limitations of reflection oriented programming languages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Definition == &lt;br /&gt;
&lt;br /&gt;
Reflection is a process of reasoning about and acting up on by itself &amp;lt;sup&amp;gt;[http://portal.acm.org/citation.cfm?id=62083.62111]&amp;lt;/sup&amp;gt;. Throwing more clarity, we can presume reflection as a computer code which can be dynamically modified in the process of execution. The dynamic modification depends on the code features and its run time behavior. A system which exhibits such reflective behavior is called as &amp;lt;B&amp;gt;reflection oriented system&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Reflection oriented programming – Insights == &lt;br /&gt;
&lt;br /&gt;
=== '''Reflection''' ===&lt;br /&gt;
&lt;br /&gt;
Reflection is the process of converting a programmatically expressed value into a component of interpreter state [http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/sobel/rop.html]. Reflection allows program entities to discover things about themselves through introspection.&lt;br /&gt;
&lt;br /&gt;
In the case of usual programs the information about itself (i.e the program) is lost as soon as it finishes compilation, but in reflection the program (object) needs to have information about its structures. This is done by storing it in the form of [http://en.wikipedia.org/wiki/Metadata metadata].&lt;br /&gt;
&lt;br /&gt;
There are two types of reflection based on its dynamic nature. Few programs support reflection during compilation. They are called as compile time or static reflection. Run time reflections are those which are carried on during run time and its the usual form of reflections.&lt;br /&gt;
&lt;br /&gt;
Example of Reflections:&lt;br /&gt;
&lt;br /&gt;
A simple ruby code does enough to understand the concept behind reflections&lt;br /&gt;
&lt;br /&gt;
 puts 1.class # print the class of 1&lt;br /&gt;
 &amp;gt;&amp;gt; Fixnum&lt;br /&gt;
 &lt;br /&gt;
 puts 123456789012345.class&lt;br /&gt;
 &amp;gt;&amp;gt; Bignum&lt;br /&gt;
 &lt;br /&gt;
The above code dynamically finds out the class. Thus reflection is done in ruby code to carry out operations during run time with [http://en.wikipedia.org/wiki/Metaprogramming meta programming] enabled.&lt;br /&gt;
&lt;br /&gt;
=== '''Reflection Oriented Program as paradigm''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reflection oriented paradigm is a new paradigm used as an extension to the object oriented paradigm. It adds various features meeting the need of various applications and its very flexible. Its a dynamic run time paradigm unlike [http://en.wikipedia.org/wiki/Object-oriented_programming object oriented] and [http://en.wikipedia.org/wiki/Procedural_programming procedure oriented model]. In this paradigm objects can be varied and modified according to the needs during the run time rather than creating static set of codes with a predetermined set of operations. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The dynamic decision in this paradigm is decided based up on the data being processed and the manipulation performed on those data sets. Here is where the knowledge about its own structure plays a crucial role. On considering an example wherein a program needs to change dynamically on various sets of data (find an instance of that data or length), intercepting the interpreters becomes important. In these cases the program should consist of codes just to identify the data and to decide the operations to be performed on them.&lt;br /&gt;
&lt;br /&gt;
=== '''Concepts''' ===&lt;br /&gt;
&lt;br /&gt;
The concept of reflection oriented programming is based upon the extension of object oriented program to dynamically shape the program based on its data. All the computations can be divided in to two categories:&lt;br /&gt;
*Atomic&lt;br /&gt;
*Compound&lt;br /&gt;
Atomic refers to when the computation is completed in a single logical step whereas compound refers to the computation that requires the completion of sub computation&lt;br /&gt;
&lt;br /&gt;
To make the concept work as described earlier a new entity called meta information(information about information) is introduced.It takes into account of the details contained in the meta level.It acts as a storage wherein it contains the meta information. It changes as the state changes and its designed to hold the meta information of the current state.On encountering data it derives the information of the state, processes it and triggers the state change. These operations are performed during run time.&lt;br /&gt;
&lt;br /&gt;
=== '''Reflectives''' ===&lt;br /&gt;
&lt;br /&gt;
A reflective does the job of describing the behavior of meta information. The current state of meta information is reflected by the instances of reflectives or objects of reflectives. &lt;br /&gt;
&lt;br /&gt;
Reflectives can be broadly classified in to two categories. &lt;br /&gt;
* Simple reflective and &lt;br /&gt;
* Control reflective.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Simple reflective&amp;lt;/b&amp;gt; contains the computational concepts whereas &amp;lt;b&amp;gt;control reflectives&amp;lt;/b&amp;gt; contains concept related to flow and control.&lt;br /&gt;
&lt;br /&gt;
There is a subcategory of simple reflectives that is designed to contain the meanings of the expressed values. It is called as the value reflectives. The common notation for expressing relative is &amp;lt;reflective&amp;gt;.Numerous examples of reflectives can be found [http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/sobel/rop.html here].&lt;br /&gt;
&lt;br /&gt;
=== '''Illustration''' ===&lt;br /&gt;
&lt;br /&gt;
Below is an illustration of the concept for reflection in ruby. Here the class person has a function defined which is used to display the name. An object is created to the class Person and we use obj.send to send the object to the function. This shows the dynamic behavior in ruby&lt;br /&gt;
&lt;br /&gt;
 class Person &lt;br /&gt;
  def hello (name)&lt;br /&gt;
   puts &amp;quot;hello, #{name}&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
 end&lt;br /&gt;
 p = Person.new &lt;br /&gt;
 p.send(:hello, &amp;quot;Sam&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== List of Reflection Oriented Programming Languages == &lt;br /&gt;
&lt;br /&gt;
The list of reflection oriented programming languages includes programming languages which can support and implement reflection i.e. dynamically typed languages like Smalltalk,etc., scripting languages like PERL, etc.&lt;br /&gt;
&lt;br /&gt;
The following is a comprehensive list of the reflection oriented programming languages:&lt;br /&gt;
* [http://en.wikipedia.org/wiki/APL_(programming_language) APL]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Befunge Befunge]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Curl_(programming_language) Curl]&lt;br /&gt;
* [http://www.engin.umd.umich.edu/CIS/course.des/cis400//delphi/delphi.html Delphi]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Eiffel_(programming_language) Eiffel]&lt;br /&gt;
* [http://iolanguage.com/ Io]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Java_(programming_language) JAVA](java.lang.reflect)&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Java_(programming_language) Lisp]&lt;br /&gt;
* [http://el.media.mit.edu/Logo-foundation/logo/programming.html Logo]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/.NET_Framework .NET Framework]&lt;br /&gt;
**	[http://en.wikipedia.org/wiki/C_Sharp_(programming_language) C#]&lt;br /&gt;
**	[http://en.wikipedia.org/wiki/Visual_Basic_.NET VB .NET]&lt;br /&gt;
* [http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/Introduction/introObjectiveC.html Objective-C]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Perl Perl]&lt;br /&gt;
* [http://www.php.net/ PHP]&lt;br /&gt;
* [http://www.python.org/ Python]&lt;br /&gt;
* [http://www.ruby-lang.org/en/ Ruby]&lt;br /&gt;
* [http://www.smalltalk.org/main/ Smalltalk]&lt;br /&gt;
* [http://www.tcl.tk/ Tcl]&lt;br /&gt;
&lt;br /&gt;
== Examples of Reflection Oriented Languages  == &lt;br /&gt;
&lt;br /&gt;
=== '''Example in JAVA''' ===&lt;br /&gt;
In JAVA, reflection is implemented by using the Java package, [http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/sobel/rop.html java.lang.reflect]:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
In the following example in JAVA, identification of an array using reflection is demonstrated.&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
import java.lang.reflect.*;&lt;br /&gt;
&lt;br /&gt;
public class FindIfArray {&lt;br /&gt;
  public static void main(String str[]){&lt;br /&gt;
  int[] arr = {1,9,8,7};&lt;br /&gt;
  String strg=&amp;quot;Hello&amp;quot;;&lt;br /&gt;
  Class cl_arr= arr.getClass();&lt;br /&gt;
  Class cl_strg= strg.getClass();&lt;br /&gt;
  if(cl_arr.isArray())&lt;br /&gt;
    System.out.println(&amp;quot; arr is an array &amp;quot;);&lt;br /&gt;
  else&lt;br /&gt;
    System.out.println(&amp;quot; arr is not an array &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  if(cl_strg.isArray())&lt;br /&gt;
    System.out.println(&amp;quot; strg is an array &amp;quot;);&lt;br /&gt;
  else&lt;br /&gt;
    System.out.println(&amp;quot; strg is not an array &amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The output of this above program will be as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C:\Reflection\javac FindIfArray.java&lt;br /&gt;
&lt;br /&gt;
C:\Reflection\java FindIfArray&lt;br /&gt;
 arr is an array&lt;br /&gt;
 strg is not an array&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Example in C#''' ===&lt;br /&gt;
To implement reflection in C#, the namespace [http://msdn.microsoft.com/en-us/library/system.reflection.aspx System.Reflection] is used.&lt;br /&gt;
&lt;br /&gt;
The System.Reflection namespace contains classes and interfaces that provide a managed view of loaded types, methods, and fields, with the ability to dynamically create and invoke types&amp;lt;sup&amp;gt;[http://www.codersource.net/published/view/291/reflection_in.aspx 7]&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Reflection;&lt;br /&gt;
&lt;br /&gt;
public class MyClass&lt;br /&gt;
{&lt;br /&gt;
   public virtual int AddNumb(int numb1,int numb2)&lt;br /&gt;
   {&lt;br /&gt;
     int result = numb1 + numb2;&lt;br /&gt;
     return result;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class MyMainClass&lt;br /&gt;
{&lt;br /&gt;
  public static int Main()&lt;br /&gt;
  {&lt;br /&gt;
    Console.WriteLine (&amp;quot;\nReflection.MethodInfo&amp;quot;);&lt;br /&gt;
    // Create MyClass object&lt;br /&gt;
&lt;br /&gt;
    MyClass myClassObj = new MyClass();&lt;br /&gt;
    // Get the Type information.&lt;br /&gt;
&lt;br /&gt;
    Type myTypeObj = myClassObj.GetType();&lt;br /&gt;
    // Get Method Information.&lt;br /&gt;
&lt;br /&gt;
    MethodInfo myMethodInfo = myTypeObj.GetMethod(&amp;quot;AddNumb&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    object[] mParam = new object[] {5, 10};&lt;br /&gt;
&lt;br /&gt;
    // Get and display the Invoke method.&lt;br /&gt;
    Console.Write(&amp;quot;\nFirst method - &amp;quot; + myTypeObj.FullName + &amp;quot; returns &amp;quot; + myMethodInfo.Invoke(myClassObj, mParam) + &amp;quot;\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this code:&lt;br /&gt;
* Firstly, we obtain the &amp;lt;b&amp;gt;type&amp;lt;/b&amp;gt; information and &amp;lt;code&amp;gt;myTypeObj&amp;lt;/code&amp;gt; will have the information about &amp;lt;code&amp;gt;MyClass&amp;lt;/code&amp;gt;&lt;br /&gt;
* Secondly,&lt;br /&gt;
by using the &amp;lt;code&amp;gt;MethodInfo myMethodInfo = myTypeObj.GetMethod(&amp;quot;AddNumb&amp;quot;); &amp;lt;/code&amp;gt;,we can get the method's information.&lt;br /&gt;
* Thirdly, the following code will invoke the &amp;lt;code&amp;gt;AddNumb&amp;lt;/code&amp;gt; method:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
myMethodInfo.Invoke(myClassObj, mParam);&lt;br /&gt;
//In this example, we will use the typeof keyword to obtain the&lt;br /&gt;
//System.Type object for a type.&lt;br /&gt;
&lt;br /&gt;
Public class MyClass2&lt;br /&gt;
{&lt;br /&gt;
  int answer;&lt;br /&gt;
  public MyClass2()&lt;br /&gt;
  {&lt;br /&gt;
    answer = 0;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public int AddNumb(intnumb1, intnumb2)&lt;br /&gt;
  {&lt;br /&gt;
    answer = numb1 + numb2;&lt;br /&gt;
    return answer;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hence, in this way we can use reflection to obtain details of an object, method, and create objects and invoke methods at runtime.&lt;br /&gt;
&lt;br /&gt;
== Importance of Reflection Oriented Programming Languages==&lt;br /&gt;
&lt;br /&gt;
Reflection is a advanced feature which helps applications work better in the following ways&amp;lt;sup&amp;gt;[http://java.sun.com/docs/books/tutorial/reflect/index.html 6]&amp;lt;/sup&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
*'''Dynamic nature''' &lt;br /&gt;
It can be used for modifying or observing a program execution at run time.&lt;br /&gt;
&lt;br /&gt;
*'''Features can be extended'''&lt;br /&gt;
An application can use external, user-defined classes by generating instances of extensibility objects using their fully-qualified names.&lt;br /&gt;
&lt;br /&gt;
*'''Class Browsers and Visual Development Environments'''&lt;br /&gt;
A class browser must be capable of enumeration of the class members. Visual Development Environments are at an advantage from making use of type information available in reflection to help the developer in writing code correctly.&lt;br /&gt;
&lt;br /&gt;
*'''Debuggers and Test Tools'''&lt;br /&gt;
Debuggers must be able to inspect the private members on the classes. Test harnesses can make use of reflection to systematically call a discoverable set of API's defined on a class, to insure a high level of code coverage in a test suite. &lt;br /&gt;
&lt;br /&gt;
*'''Adaptability to environment &amp;amp; elimination of hard-coding'''&lt;br /&gt;
Consider an application which makes use of two different classes X and Y interchangeably to do similar operations. Without reflection-oriented programming, the application might be hard-coded to call method names of class X and class Y.&lt;br /&gt;
However, by making use of the reflection-oriented programming paradigm, the application can be designed and written to utilize reflection in order to invoke methods in classes X and Y without hard-coding method names.&lt;br /&gt;
&lt;br /&gt;
*'''Reflection can be used in [http://en.wikipedia.org/wiki/Aspect-oriented_programming aspect-oriented programming].'''&lt;br /&gt;
Aspect-oriented programming is all about enabling the programmer to concisely address functionality that may crosscut the actual implementation of their application &amp;lt;sup&amp;gt;[http://people.csail.mit.edu/gregs/cacm-sidebar.pdf 9]&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Limitations of Reflection Oriented Programming Languages ==&lt;br /&gt;
&lt;br /&gt;
There are certain limitations which hinder the usage of the reflection oriented programming languages with the major drawback being performance issues&amp;lt;sup&amp;gt;[http://java.sun.com/docs/books/tutorial/reflect/index.html 6]&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*'''Performance Overhead'''&lt;br /&gt;
Operations involving reflections have slower performance than the non-reflective counterparts.&lt;br /&gt;
&lt;br /&gt;
Consider the following java code&amp;lt;sup&amp;gt;[http://www.ibm.com/developerworks/library/j-dyn0603/ 9]&amp;lt;/sup&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public int accessSame(int loops) {&lt;br /&gt;
    m_value = 0;&lt;br /&gt;
    for (int index = 0; index &amp;lt; loops; index++) {&lt;br /&gt;
        m_value = (m_value + ADDITIVE_VALUE) *&lt;br /&gt;
            MULTIPLIER_VALUE;&lt;br /&gt;
    }&lt;br /&gt;
    return m_value;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public int accessReference(int loops) {&lt;br /&gt;
    TimingClass timing = new TimingClass();&lt;br /&gt;
    for (int index = 0; index &amp;lt; loops; index++) {&lt;br /&gt;
        timing.m_value = (timing.m_value + ADDITIVE_VALUE) *&lt;br /&gt;
            MULTIPLIER_VALUE;&lt;br /&gt;
    }&lt;br /&gt;
    return timing.m_value;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public int accessReflection(int loops) throws Exception {&lt;br /&gt;
    TimingClass timing = new TimingClass();&lt;br /&gt;
    try {&lt;br /&gt;
        Field field = TimingClass.class.&lt;br /&gt;
            getDeclaredField(&amp;quot;m_value&amp;quot;);&lt;br /&gt;
        for (int index = 0; index &amp;lt; loops; index++) {&lt;br /&gt;
            int value = (field.getInt(timing) +&lt;br /&gt;
                ADDITIVE_VALUE) * MULTIPLIER_VALUE;&lt;br /&gt;
            field.setInt(timing, value);&lt;br /&gt;
        }&lt;br /&gt;
        return timing.m_value;&lt;br /&gt;
    } catch (Exception ex) {&lt;br /&gt;
        System.out.println(&amp;quot;Error using reflection&amp;quot;);&lt;br /&gt;
        throw ex;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to study the performance issues, the program above is called repeatedly with a large loop count.&lt;br /&gt;
&lt;br /&gt;
An average field access time is calculated, and during this, the first call has not been included. Hence, the initialization factor has not been considered as a factor in the results.&lt;br /&gt;
In this performance test, a loop count of 10 million for each call has been considered and this execution has been performed on a 1GHz Pentium III system.&lt;br /&gt;
&lt;br /&gt;
In the &amp;lt;b&amp;gt;Figure 1&amp;lt;sup&amp;gt;[http://www.ibm.com/developerworks/library/j-dyn0603/ 9]&amp;lt;/sup&amp;gt;&amp;lt;/b&amp;gt;: &lt;br /&gt;
the timing results for three different Linux JVM's(with default settings for each JVM) have been displayed.&lt;br /&gt;
&lt;br /&gt;
[[Image:field-accesses.jpg|frame|center|Figure 1|&amp;lt;sup&amp;gt;[http://www.ibm.com/developerworks/library/j-dyn0603/ 9]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
The X-axis, i.e. the logarithmic scale, displays the full range of times. &lt;br /&gt;
The following observations can be made from the performance test and the above figure:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;In the first 2 cases, the execution time using reflection is 1000 times greater than accessing directly.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;The IBM's JVM has worked considerably better when compared to the Sun JVM's but the reflection method has taken more than 700 times as long as the other methods. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;We can observe that there were no notable differences in the times between the other two methods on the other JVM, though the IBM JVM ran these almost 2 times faster as the Sun JVM's.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Probably, this difference shows the specialized optimizations used by the Sun Hot Spot JVMs, which tend to do poorly in certain simple benchmarks.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
*'''Security Restrictions'''&lt;br /&gt;
Reflections require a run time permission which may not be present when running under a security manager.&lt;br /&gt;
&lt;br /&gt;
*'''Exposure of Internals'''&lt;br /&gt;
Since reflection allows code to perform operations that would be illegal in non-reflective code, such as accessing private methods and fields, the use of reflection can result in unexpected side-effects, which may cause the code to become dysfunctional and may destroy portability. Reflective code breaks abstractions and therefore may change behavior with upgrades of the platform.&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
Reflection is a wide-ranging topic that has been studied independently in various areas of science in general, as well as the field of computer science particularly. Even in the sub-area of programming languages, it has been applied to a variety of paradigms, especially the logic, functional and object oriented ones&amp;lt;sup&amp;gt;[8]&amp;lt;/sup&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
With a few exceptions, performance problems of reflection oriented programming languages are rarely addressed and never solved completely in the research of reflection. The best way to overcome this performance problem of reflection is to use less amount of reflection oriented coding in the programming languages.&lt;br /&gt;
&lt;br /&gt;
But to make reflection oriented languages accepted by a wider community we have to prove that the implementation of reflection can take place in a way which does not affect performance too much.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Conference on Object Oriented Programming Systems Languages and Applications : [http://portal.acm.org/citation.cfm?id=62083.62111 Reflection in an object-oriented concurrent language]&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;Jonathan M. Sobel Daniel P. Friedman : [http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/sobel/rop.html An Introduction to Reflection-Oriented Programming]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;.NET Framework Class Library : [http://msdn.microsoft.com/en-us/library/system.reflection.aspx System.Reflection Namespace]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Package [http://java.sun.com/j2se/1.3/docs/api/java/lang/reflect/package-summary.html : java.lang.reflect]  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://wapedia.mobi/en/Reflection_(computer_science) Reflection]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://java.sun.com/docs/books/tutorial/reflect/index.html Trail: The Reflection API]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://www.codersource.net/published/view/291/reflection_in.aspx Reflection in C#] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Reflection in logic, functional and object-oriented programming: a Short Comparative Study (1995) by François-Nicola Demers ,  Jacques Malenfant &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://www.ibm.com/developerworks/library/j-dyn0603/ Java Programming Dynamics Part 2: Introducing reflection]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://people.csail.mit.edu/gregs/cacm-sidebar.pdf Aspect-Oriented Programming using Reflection and Metaobject Protocols]: Gregory T. Sullivan, Artifcial Intelligence Laboratory, Massachusetts Institute of Technology&amp;lt;/li&amp;gt;&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=22852</id>
		<title>CSC/ECE 517 Fall 2009/wiki2 8 RP</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=22852"/>
		<updated>2009-10-08T02:56:52Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* '''Examples and Scenerios''' */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Reflection Oriented Programming'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Definition == &lt;br /&gt;
&lt;br /&gt;
Reflection is a process of reasoning about and acting up on by itself [http://portal.acm.org/citation.cfm?id=62083.62111]. Throwing more clarity we can presume reflection as a computer code which can be dynamically modified in the process of execution. The dynamic modification depends on the code features and its run time behavior.A system which exhibits such reflective behavior is called as reflection oriented system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview == &lt;br /&gt;
&lt;br /&gt;
This Article throws light up on what Reflection Oriented programme is about. It deals with the need for such dynamic aspect and how it is useful in satisfying the practical needs.Further it highlights the research work that is carried out in this area and scope for future improvements.&lt;br /&gt;
&lt;br /&gt;
== Reflection oriented programming – Insights == &lt;br /&gt;
&lt;br /&gt;
=== '''Reflection''' ===&lt;br /&gt;
&lt;br /&gt;
Reflection is the process of converting a programmatically expressed value into a component of interpreter state [http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/sobel/rop.html]. In the case of usual programs the information about itself (i.e the program) is lost as soon as it finishes compilation ,but in Reflection the program (object) needs to have information about its structures. This is done by storing it in the form of metadata[http://en.wikipedia.org/wiki/Metadata].&lt;br /&gt;
&lt;br /&gt;
There are two types of reflection based on its dynamic nature.Few programs support reflection during compilation. They are called as compile time or static reflection. Runtime reflections are those which are carried on during runtime and its the usual form of reflections.&lt;br /&gt;
&lt;br /&gt;
Example of Reflections:&lt;br /&gt;
&lt;br /&gt;
A simple ruby code does enough to understand the concept behind reflections&lt;br /&gt;
&lt;br /&gt;
 puts 12.kind_of?&lt;br /&gt;
&lt;br /&gt;
The above code dynamically finds out what kind is 12 ? It returns the value integer. Thus reflection is done in ruby code to carry out operations during runtime with metaprogramming[http://en.wikipedia.org/wiki/Metaprogramming] enabled.&lt;br /&gt;
&lt;br /&gt;
=== '''Reflection Oriented Program as Paradigm''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reflection oriented paradigm is a new paradigm used as an extension to the object oriented paradigm. It adds various features meeting the need of various applications and its very flexible. Its a dynamic run time paradigm unlike object oriented and procedure oriented model. In this paradigm objects can be varied and modified according to the needs during the run time rather than creating static set of codes with a predetermined set of operations. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The dynamic decision in this paradigm is decided based up on the data being processed and the manipulation performed on those data sets.Here is where the knowledge about its own structure plays a crucial role. On considering an example wherein a program needs to change dynamically on various sets of data (find an instance of that data or length) ,intercepting the interpreters becomes important. In these cases the program should consist of codes just to identify the data and to decide the operations to be performed on them.&lt;br /&gt;
&lt;br /&gt;
=== '''Concepts''' ===&lt;br /&gt;
&lt;br /&gt;
The concept of reflection oriented programming is based up on the extension of object oriented program to dynamically shape the program based on its data. All the computations can be divided in to two categories.ATOMIC and COMPOUND.Atomic refers to when the computation is completed in a single logical step whereas compound refers to the computation that requires the completion of sub computation&lt;br /&gt;
&lt;br /&gt;
To make the concept work as described earlier a new entity called metainformation(information about information) is introduced.It takes into account of the details contained in the meta level.It acts as a storage wherein it contains the metainformation. It changes as the state changes and its designed to hold the metainformation of the current state.On encountering data it derives the information of the state, processes it and triggers the state change. These operations are performed during runtime&lt;br /&gt;
&lt;br /&gt;
=== '''Reflectives''' ===&lt;br /&gt;
&lt;br /&gt;
A reflective does the job of describing the behavior of metainformation. The current state of meta information is reflected by the instances of reflectives or objects of reflectives. Reflectives can be broadly classified in to two catgories. Simple reflective and Control reflective.Simple reflective contains the computational concepts whereas Control reflectives contains concept related to flow and control.&lt;br /&gt;
&lt;br /&gt;
There is a subcategory of simple reflectives that is designed to contain the meanings of the expressed values. Its called as value reflectives. The common notation for expressing relative is &amp;lt;reflective&amp;gt;.Numerous examples of reflectives can be found here [http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/sobel/rop.html]&lt;br /&gt;
&lt;br /&gt;
=== '''Example''' ===&lt;br /&gt;
&lt;br /&gt;
Below is an example for reflection in ruby. Here the class person has a function defined which is used to display the name. An object is created to the class Person and we use obj.send to send the object to the function. This shows the dynamic behavior in ruby&lt;br /&gt;
&lt;br /&gt;
 class Person &lt;br /&gt;
  def hello (name)&lt;br /&gt;
   puts &amp;quot;hello, #{name}&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
 end&lt;br /&gt;
 p = Person.new &lt;br /&gt;
 p.send(:hello, &amp;quot;Sam&amp;quot;)&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=22850</id>
		<title>CSC/ECE 517 Fall 2009/wiki2 8 RP</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=22850"/>
		<updated>2009-10-08T02:54:04Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* '''Examples and Scenerios''' */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Reflection Oriented Programming'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Definition == &lt;br /&gt;
&lt;br /&gt;
Reflection is a process of reasoning about and acting up on by itself [http://portal.acm.org/citation.cfm?id=62083.62111]. Throwing more clarity we can presume reflection as a computer code which can be dynamically modified in the process of execution. The dynamic modification depends on the code features and its run time behavior.A system which exhibits such reflective behavior is called as reflection oriented system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview == &lt;br /&gt;
&lt;br /&gt;
This Article throws light up on what Reflection Oriented programme is about. It deals with the need for such dynamic aspect and how it is useful in satisfying the practical needs.Further it highlights the research work that is carried out in this area and scope for future improvements.&lt;br /&gt;
&lt;br /&gt;
== Reflection oriented programming – Insights == &lt;br /&gt;
&lt;br /&gt;
=== '''Reflection''' ===&lt;br /&gt;
&lt;br /&gt;
Reflection is the process of converting a programmatically expressed value into a component of interpreter state [http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/sobel/rop.html]. In the case of usual programs the information about itself (i.e the program) is lost as soon as it finishes compilation ,but in Reflection the program (object) needs to have information about its structures. This is done by storing it in the form of metadata[http://en.wikipedia.org/wiki/Metadata].&lt;br /&gt;
&lt;br /&gt;
There are two types of reflection based on its dynamic nature.Few programs support reflection during compilation. They are called as compile time or static reflection. Runtime reflections are those which are carried on during runtime and its the usual form of reflections.&lt;br /&gt;
&lt;br /&gt;
Example of Reflections:&lt;br /&gt;
&lt;br /&gt;
A simple ruby code does enough to understand the concept behind reflections&lt;br /&gt;
&lt;br /&gt;
 puts 12.kind_of?&lt;br /&gt;
&lt;br /&gt;
The above code dynamically finds out what kind is 12 ? It returns the value integer. Thus reflection is done in ruby code to carry out operations during runtime with metaprogramming[http://en.wikipedia.org/wiki/Metaprogramming] enabled.&lt;br /&gt;
&lt;br /&gt;
=== '''Reflection Oriented Program as Paradigm''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reflection oriented paradigm is a new paradigm used as an extension to the object oriented paradigm. It adds various features meeting the need of various applications and its very flexible. Its a dynamic run time paradigm unlike object oriented and procedure oriented model. In this paradigm objects can be varied and modified according to the needs during the run time rather than creating static set of codes with a predetermined set of operations. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The dynamic decision in this paradigm is decided based up on the data being processed and the manipulation performed on those data sets.Here is where the knowledge about its own structure plays a crucial role. On considering an example wherein a program needs to change dynamically on various sets of data (find an instance of that data or length) ,intercepting the interpreters becomes important. In these cases the program should consist of codes just to identify the data and to decide the operations to be performed on them.&lt;br /&gt;
&lt;br /&gt;
=== '''Concepts''' ===&lt;br /&gt;
&lt;br /&gt;
The concept of reflection oriented programming is based up on the extension of object oriented program to dynamically shape the program based on its data. All the computations can be divided in to two categories.ATOMIC and COMPOUND.Atomic refers to when the computation is completed in a single logical step whereas compound refers to the computation that requires the completion of sub computation&lt;br /&gt;
&lt;br /&gt;
To make the concept work as described earlier a new entity called metainformation(information about information) is introduced.It takes into account of the details contained in the meta level.It acts as a storage wherein it contains the metainformation. It changes as the state changes and its designed to hold the metainformation of the current state.On encountering data it derives the information of the state, processes it and triggers the state change. These operations are performed during runtime&lt;br /&gt;
&lt;br /&gt;
=== '''Reflectives''' ===&lt;br /&gt;
&lt;br /&gt;
A reflective does the job of describing the behavior of metainformation. The current state of meta information is reflected by the instances of reflectives or objects of reflectives. Reflectives can be broadly classified in to two catgories. Simple reflective and Control reflective.Simple reflective contains the computational concepts whereas Control reflectives contains concept related to flow and control.&lt;br /&gt;
&lt;br /&gt;
There is a subcategory of simple reflectives that is designed to contain the meanings of the expressed values. Its called as value reflectives. The common notation for expressing relative is &amp;lt;reflective&amp;gt;.Numerous examples of reflectives can be found here [http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/sobel/rop.html]&lt;br /&gt;
&lt;br /&gt;
=== '''Examples and Scenerios''' ===&lt;br /&gt;
&lt;br /&gt;
Below is an example for reflection in ruby. Here the class person has a function defined which is used to display the name. An object is created to the class Person and we use obj.send to send the object to the function. This shows the dynamic behavior in ruby&lt;br /&gt;
&lt;br /&gt;
 class Person &lt;br /&gt;
  def hello (name)&lt;br /&gt;
   puts &amp;quot;hello, #{name}&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
 end&lt;br /&gt;
 p = Person.new &lt;br /&gt;
 p.send(:hello, &amp;quot;Sam&amp;quot;)&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=22849</id>
		<title>CSC/ECE 517 Fall 2009/wiki2 8 RP</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=22849"/>
		<updated>2009-10-08T02:53:35Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* '''Examples and Scenerios''' */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Reflection Oriented Programming'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Definition == &lt;br /&gt;
&lt;br /&gt;
Reflection is a process of reasoning about and acting up on by itself [http://portal.acm.org/citation.cfm?id=62083.62111]. Throwing more clarity we can presume reflection as a computer code which can be dynamically modified in the process of execution. The dynamic modification depends on the code features and its run time behavior.A system which exhibits such reflective behavior is called as reflection oriented system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview == &lt;br /&gt;
&lt;br /&gt;
This Article throws light up on what Reflection Oriented programme is about. It deals with the need for such dynamic aspect and how it is useful in satisfying the practical needs.Further it highlights the research work that is carried out in this area and scope for future improvements.&lt;br /&gt;
&lt;br /&gt;
== Reflection oriented programming – Insights == &lt;br /&gt;
&lt;br /&gt;
=== '''Reflection''' ===&lt;br /&gt;
&lt;br /&gt;
Reflection is the process of converting a programmatically expressed value into a component of interpreter state [http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/sobel/rop.html]. In the case of usual programs the information about itself (i.e the program) is lost as soon as it finishes compilation ,but in Reflection the program (object) needs to have information about its structures. This is done by storing it in the form of metadata[http://en.wikipedia.org/wiki/Metadata].&lt;br /&gt;
&lt;br /&gt;
There are two types of reflection based on its dynamic nature.Few programs support reflection during compilation. They are called as compile time or static reflection. Runtime reflections are those which are carried on during runtime and its the usual form of reflections.&lt;br /&gt;
&lt;br /&gt;
Example of Reflections:&lt;br /&gt;
&lt;br /&gt;
A simple ruby code does enough to understand the concept behind reflections&lt;br /&gt;
&lt;br /&gt;
 puts 12.kind_of?&lt;br /&gt;
&lt;br /&gt;
The above code dynamically finds out what kind is 12 ? It returns the value integer. Thus reflection is done in ruby code to carry out operations during runtime with metaprogramming[http://en.wikipedia.org/wiki/Metaprogramming] enabled.&lt;br /&gt;
&lt;br /&gt;
=== '''Reflection Oriented Program as Paradigm''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reflection oriented paradigm is a new paradigm used as an extension to the object oriented paradigm. It adds various features meeting the need of various applications and its very flexible. Its a dynamic run time paradigm unlike object oriented and procedure oriented model. In this paradigm objects can be varied and modified according to the needs during the run time rather than creating static set of codes with a predetermined set of operations. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The dynamic decision in this paradigm is decided based up on the data being processed and the manipulation performed on those data sets.Here is where the knowledge about its own structure plays a crucial role. On considering an example wherein a program needs to change dynamically on various sets of data (find an instance of that data or length) ,intercepting the interpreters becomes important. In these cases the program should consist of codes just to identify the data and to decide the operations to be performed on them.&lt;br /&gt;
&lt;br /&gt;
=== '''Concepts''' ===&lt;br /&gt;
&lt;br /&gt;
The concept of reflection oriented programming is based up on the extension of object oriented program to dynamically shape the program based on its data. All the computations can be divided in to two categories.ATOMIC and COMPOUND.Atomic refers to when the computation is completed in a single logical step whereas compound refers to the computation that requires the completion of sub computation&lt;br /&gt;
&lt;br /&gt;
To make the concept work as described earlier a new entity called metainformation(information about information) is introduced.It takes into account of the details contained in the meta level.It acts as a storage wherein it contains the metainformation. It changes as the state changes and its designed to hold the metainformation of the current state.On encountering data it derives the information of the state, processes it and triggers the state change. These operations are performed during runtime&lt;br /&gt;
&lt;br /&gt;
=== '''Reflectives''' ===&lt;br /&gt;
&lt;br /&gt;
A reflective does the job of describing the behavior of metainformation. The current state of meta information is reflected by the instances of reflectives or objects of reflectives. Reflectives can be broadly classified in to two catgories. Simple reflective and Control reflective.Simple reflective contains the computational concepts whereas Control reflectives contains concept related to flow and control.&lt;br /&gt;
&lt;br /&gt;
There is a subcategory of simple reflectives that is designed to contain the meanings of the expressed values. Its called as value reflectives. The common notation for expressing relative is &amp;lt;reflective&amp;gt;.Numerous examples of reflectives can be found here [http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/sobel/rop.html]&lt;br /&gt;
&lt;br /&gt;
=== '''Examples and Scenerios''' ===&lt;br /&gt;
&lt;br /&gt;
Below is an example for reflection in ruby. Here the class person has a function defined which is used to display the name. An object is created to the class Person and we use obj.send to send the object to the function. This shows the dynamic behavior in ruby&lt;br /&gt;
&lt;br /&gt;
 class Person &lt;br /&gt;
  def greet (name)&lt;br /&gt;
   puts &amp;quot;hello, #{name}&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
 end&lt;br /&gt;
 p = Person.new &lt;br /&gt;
 p.send(:greet, &amp;quot;Sam&amp;quot;)&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=22848</id>
		<title>CSC/ECE 517 Fall 2009/wiki2 8 RP</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=22848"/>
		<updated>2009-10-08T02:53:25Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* '''Examples and Scenerios''' */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Reflection Oriented Programming'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Definition == &lt;br /&gt;
&lt;br /&gt;
Reflection is a process of reasoning about and acting up on by itself [http://portal.acm.org/citation.cfm?id=62083.62111]. Throwing more clarity we can presume reflection as a computer code which can be dynamically modified in the process of execution. The dynamic modification depends on the code features and its run time behavior.A system which exhibits such reflective behavior is called as reflection oriented system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview == &lt;br /&gt;
&lt;br /&gt;
This Article throws light up on what Reflection Oriented programme is about. It deals with the need for such dynamic aspect and how it is useful in satisfying the practical needs.Further it highlights the research work that is carried out in this area and scope for future improvements.&lt;br /&gt;
&lt;br /&gt;
== Reflection oriented programming – Insights == &lt;br /&gt;
&lt;br /&gt;
=== '''Reflection''' ===&lt;br /&gt;
&lt;br /&gt;
Reflection is the process of converting a programmatically expressed value into a component of interpreter state [http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/sobel/rop.html]. In the case of usual programs the information about itself (i.e the program) is lost as soon as it finishes compilation ,but in Reflection the program (object) needs to have information about its structures. This is done by storing it in the form of metadata[http://en.wikipedia.org/wiki/Metadata].&lt;br /&gt;
&lt;br /&gt;
There are two types of reflection based on its dynamic nature.Few programs support reflection during compilation. They are called as compile time or static reflection. Runtime reflections are those which are carried on during runtime and its the usual form of reflections.&lt;br /&gt;
&lt;br /&gt;
Example of Reflections:&lt;br /&gt;
&lt;br /&gt;
A simple ruby code does enough to understand the concept behind reflections&lt;br /&gt;
&lt;br /&gt;
 puts 12.kind_of?&lt;br /&gt;
&lt;br /&gt;
The above code dynamically finds out what kind is 12 ? It returns the value integer. Thus reflection is done in ruby code to carry out operations during runtime with metaprogramming[http://en.wikipedia.org/wiki/Metaprogramming] enabled.&lt;br /&gt;
&lt;br /&gt;
=== '''Reflection Oriented Program as Paradigm''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reflection oriented paradigm is a new paradigm used as an extension to the object oriented paradigm. It adds various features meeting the need of various applications and its very flexible. Its a dynamic run time paradigm unlike object oriented and procedure oriented model. In this paradigm objects can be varied and modified according to the needs during the run time rather than creating static set of codes with a predetermined set of operations. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The dynamic decision in this paradigm is decided based up on the data being processed and the manipulation performed on those data sets.Here is where the knowledge about its own structure plays a crucial role. On considering an example wherein a program needs to change dynamically on various sets of data (find an instance of that data or length) ,intercepting the interpreters becomes important. In these cases the program should consist of codes just to identify the data and to decide the operations to be performed on them.&lt;br /&gt;
&lt;br /&gt;
=== '''Concepts''' ===&lt;br /&gt;
&lt;br /&gt;
The concept of reflection oriented programming is based up on the extension of object oriented program to dynamically shape the program based on its data. All the computations can be divided in to two categories.ATOMIC and COMPOUND.Atomic refers to when the computation is completed in a single logical step whereas compound refers to the computation that requires the completion of sub computation&lt;br /&gt;
&lt;br /&gt;
To make the concept work as described earlier a new entity called metainformation(information about information) is introduced.It takes into account of the details contained in the meta level.It acts as a storage wherein it contains the metainformation. It changes as the state changes and its designed to hold the metainformation of the current state.On encountering data it derives the information of the state, processes it and triggers the state change. These operations are performed during runtime&lt;br /&gt;
&lt;br /&gt;
=== '''Reflectives''' ===&lt;br /&gt;
&lt;br /&gt;
A reflective does the job of describing the behavior of metainformation. The current state of meta information is reflected by the instances of reflectives or objects of reflectives. Reflectives can be broadly classified in to two catgories. Simple reflective and Control reflective.Simple reflective contains the computational concepts whereas Control reflectives contains concept related to flow and control.&lt;br /&gt;
&lt;br /&gt;
There is a subcategory of simple reflectives that is designed to contain the meanings of the expressed values. Its called as value reflectives. The common notation for expressing relative is &amp;lt;reflective&amp;gt;.Numerous examples of reflectives can be found here [http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/sobel/rop.html]&lt;br /&gt;
&lt;br /&gt;
=== '''Examples and Scenerios''' ===&lt;br /&gt;
&lt;br /&gt;
Below is an example for reflection in ruby. Here the class person has a function defined which is used to display the name. An object is created to the class Person and we use obj.send to send the object to the function. This shows the dynamic behavior in ruby&lt;br /&gt;
&lt;br /&gt;
 class Person &lt;br /&gt;
  def greet (name)&lt;br /&gt;
   puts &amp;quot;hello, #{name}&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 p = Person.new &lt;br /&gt;
 p.send(:greet, &amp;quot;Sam&amp;quot;)&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=22847</id>
		<title>CSC/ECE 517 Fall 2009/wiki2 8 RP</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=22847"/>
		<updated>2009-10-08T02:53:07Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* '''Examples and Scenerios''' */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Reflection Oriented Programming'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Definition == &lt;br /&gt;
&lt;br /&gt;
Reflection is a process of reasoning about and acting up on by itself [http://portal.acm.org/citation.cfm?id=62083.62111]. Throwing more clarity we can presume reflection as a computer code which can be dynamically modified in the process of execution. The dynamic modification depends on the code features and its run time behavior.A system which exhibits such reflective behavior is called as reflection oriented system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview == &lt;br /&gt;
&lt;br /&gt;
This Article throws light up on what Reflection Oriented programme is about. It deals with the need for such dynamic aspect and how it is useful in satisfying the practical needs.Further it highlights the research work that is carried out in this area and scope for future improvements.&lt;br /&gt;
&lt;br /&gt;
== Reflection oriented programming – Insights == &lt;br /&gt;
&lt;br /&gt;
=== '''Reflection''' ===&lt;br /&gt;
&lt;br /&gt;
Reflection is the process of converting a programmatically expressed value into a component of interpreter state [http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/sobel/rop.html]. In the case of usual programs the information about itself (i.e the program) is lost as soon as it finishes compilation ,but in Reflection the program (object) needs to have information about its structures. This is done by storing it in the form of metadata[http://en.wikipedia.org/wiki/Metadata].&lt;br /&gt;
&lt;br /&gt;
There are two types of reflection based on its dynamic nature.Few programs support reflection during compilation. They are called as compile time or static reflection. Runtime reflections are those which are carried on during runtime and its the usual form of reflections.&lt;br /&gt;
&lt;br /&gt;
Example of Reflections:&lt;br /&gt;
&lt;br /&gt;
A simple ruby code does enough to understand the concept behind reflections&lt;br /&gt;
&lt;br /&gt;
 puts 12.kind_of?&lt;br /&gt;
&lt;br /&gt;
The above code dynamically finds out what kind is 12 ? It returns the value integer. Thus reflection is done in ruby code to carry out operations during runtime with metaprogramming[http://en.wikipedia.org/wiki/Metaprogramming] enabled.&lt;br /&gt;
&lt;br /&gt;
=== '''Reflection Oriented Program as Paradigm''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reflection oriented paradigm is a new paradigm used as an extension to the object oriented paradigm. It adds various features meeting the need of various applications and its very flexible. Its a dynamic run time paradigm unlike object oriented and procedure oriented model. In this paradigm objects can be varied and modified according to the needs during the run time rather than creating static set of codes with a predetermined set of operations. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The dynamic decision in this paradigm is decided based up on the data being processed and the manipulation performed on those data sets.Here is where the knowledge about its own structure plays a crucial role. On considering an example wherein a program needs to change dynamically on various sets of data (find an instance of that data or length) ,intercepting the interpreters becomes important. In these cases the program should consist of codes just to identify the data and to decide the operations to be performed on them.&lt;br /&gt;
&lt;br /&gt;
=== '''Concepts''' ===&lt;br /&gt;
&lt;br /&gt;
The concept of reflection oriented programming is based up on the extension of object oriented program to dynamically shape the program based on its data. All the computations can be divided in to two categories.ATOMIC and COMPOUND.Atomic refers to when the computation is completed in a single logical step whereas compound refers to the computation that requires the completion of sub computation&lt;br /&gt;
&lt;br /&gt;
To make the concept work as described earlier a new entity called metainformation(information about information) is introduced.It takes into account of the details contained in the meta level.It acts as a storage wherein it contains the metainformation. It changes as the state changes and its designed to hold the metainformation of the current state.On encountering data it derives the information of the state, processes it and triggers the state change. These operations are performed during runtime&lt;br /&gt;
&lt;br /&gt;
=== '''Reflectives''' ===&lt;br /&gt;
&lt;br /&gt;
A reflective does the job of describing the behavior of metainformation. The current state of meta information is reflected by the instances of reflectives or objects of reflectives. Reflectives can be broadly classified in to two catgories. Simple reflective and Control reflective.Simple reflective contains the computational concepts whereas Control reflectives contains concept related to flow and control.&lt;br /&gt;
&lt;br /&gt;
There is a subcategory of simple reflectives that is designed to contain the meanings of the expressed values. Its called as value reflectives. The common notation for expressing relative is &amp;lt;reflective&amp;gt;.Numerous examples of reflectives can be found here [http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/sobel/rop.html]&lt;br /&gt;
&lt;br /&gt;
=== '''Examples and Scenerios''' ===&lt;br /&gt;
&lt;br /&gt;
Below is an example for reflection in ruby. Here the class person has a function defined which is used to display the name. An object is created to the class Person and we use obj.send to send the object to the function. This shows the dynamic behavior in ruby&lt;br /&gt;
&lt;br /&gt;
 class Person &lt;br /&gt;
  def greet (name)&lt;br /&gt;
   puts &amp;quot;hello, #{name}&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p = Person.new&lt;br /&gt;
p.send(:greet, &amp;quot;Sam&amp;quot;)&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=22832</id>
		<title>CSC/ECE 517 Fall 2009/wiki2 8 RP</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=22832"/>
		<updated>2009-10-08T02:31:28Z</updated>

		<summary type="html">&lt;p&gt;Beacon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Reflection Oriented Programming'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Definition == &lt;br /&gt;
&lt;br /&gt;
Reflection is a process of reasoning about and acting up on by itself [http://portal.acm.org/citation.cfm?id=62083.62111]. Throwing more clarity we can presume reflection as a computer code which can be dynamically modified in the process of execution. The dynamic modification depends on the code features and its run time behavior.A system which exhibits such reflective behavior is called as reflection oriented system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview == &lt;br /&gt;
&lt;br /&gt;
This Article throws light up on what Reflection Oriented programme is about. It deals with the need for such dynamic aspect and how it is useful in satisfying the practical needs.Further it highlights the research work that is carried out in this area and scope for future improvements.&lt;br /&gt;
&lt;br /&gt;
== Reflection oriented programming – Insights == &lt;br /&gt;
&lt;br /&gt;
=== '''Reflection''' ===&lt;br /&gt;
&lt;br /&gt;
Reflection is the process of converting a programmatically expressed value into a component of interpreter state [http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/sobel/rop.html]. In the case of usual programs the information about itself (i.e the program) is lost as soon as it finishes compilation ,but in Reflection the program (object) needs to have information about its structures. This is done by storing it in the form of metadata[http://en.wikipedia.org/wiki/Metadata].&lt;br /&gt;
&lt;br /&gt;
There are two types of reflection based on its dynamic nature.Few programs support reflection during compilation. They are called as compile time or static reflection. Runtime reflections are those which are carried on during runtime and its the usual form of reflections.&lt;br /&gt;
&lt;br /&gt;
Example of Reflections:&lt;br /&gt;
&lt;br /&gt;
A simple ruby code does enough to understand the concept behind reflections&lt;br /&gt;
&lt;br /&gt;
 puts 12.kind_of?&lt;br /&gt;
&lt;br /&gt;
The above code dynamically finds out what kind is 12 ? It returns the value integer. Thus reflection is done in ruby code to carry out operations during runtime with metaprogramming[http://en.wikipedia.org/wiki/Metaprogramming] enabled.&lt;br /&gt;
&lt;br /&gt;
=== '''Reflection Oriented Program as Paradigm''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reflection oriented paradigm is a new paradigm used as an extension to the object oriented paradigm. It adds various features meeting the need of various applications and its very flexible. Its a dynamic run time paradigm unlike object oriented and procedure oriented model. In this paradigm objects can be varied and modified according to the needs during the run time rather than creating static set of codes with a predetermined set of operations. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The dynamic decision in this paradigm is decided based up on the data being processed and the manipulation performed on those data sets.Here is where the knowledge about its own structure plays a crucial role. On considering an example wherein a program needs to change dynamically on various sets of data (find an instance of that data or length) ,intercepting the interpreters becomes important. In these cases the program should consist of codes just to identify the data and to decide the operations to be performed on them.&lt;br /&gt;
&lt;br /&gt;
=== '''Concepts''' ===&lt;br /&gt;
&lt;br /&gt;
The concept of reflection oriented programming is based up on the extension of object oriented program to dynamically shape the program based on its data. All the computations can be divided in to two categories.ATOMIC and COMPOUND.Atomic refers to when the computation is completed in a single logical step whereas compound refers to the computation that requires the completion of sub computation&lt;br /&gt;
&lt;br /&gt;
To make the concept work as described earlier a new entity called metainformation(information about information) is introduced.It takes into account of the details contained in the meta level.It acts as a storage wherein it contains the metainformation. It changes as the state changes and its designed to hold the metainformation of the current state.On encountering data it derives the information of the state, processes it and triggers the state change. These operations are performed during runtime&lt;br /&gt;
&lt;br /&gt;
=== '''Reflectives''' ===&lt;br /&gt;
&lt;br /&gt;
A reflective does the job of describing the behavior of metainformation. The current state of meta information is reflected by the instances of reflectives or objects of reflectives. Reflectives can be broadly classified in to two catgories. Simple reflective and Control reflective.Simple reflective contains the computational concepts whereas Control reflectives contains concept related to flow and control.&lt;br /&gt;
&lt;br /&gt;
There is a subcategory of simple reflectives that is designed to contain the meanings of the expressed values. Its called as value reflectives. The common notation for expressing relative is &amp;lt;reflective&amp;gt;.Numerous examples of reflectives can be found here [http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/sobel/rop.html]&lt;br /&gt;
&lt;br /&gt;
=== '''Examples and Scenerios''' ===&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=22831</id>
		<title>CSC/ECE 517 Fall 2009/wiki2 8 RP</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=22831"/>
		<updated>2009-10-08T02:31:10Z</updated>

		<summary type="html">&lt;p&gt;Beacon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Reflection Oriented Programming'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Definition == &lt;br /&gt;
&lt;br /&gt;
Reflection is a process of reasoning about and acting up on by itself [http://portal.acm.org/citation.cfm?id=62083.62111]. Throwing more clarity we can presume reflection as a computer code which can be dynamically modified in the process of execution. The dynamic modification depends on the code features and its run time behavior.A system which exhibits such reflective behavior is called as reflection oriented system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview == &lt;br /&gt;
&lt;br /&gt;
This Article throws light up on what Reflection Oriented programme is about. It deals with the need for such dynamic aspect and how it is useful in satisfying the practical needs.Further it highlights the research work that is carried out in this area and scope for future improvements.&lt;br /&gt;
&lt;br /&gt;
== Reflection oriented programming – Insights == &lt;br /&gt;
&lt;br /&gt;
=== '''Reflection''' ===&lt;br /&gt;
&lt;br /&gt;
Reflection is the process of converting a programmatically expressed value into a component of interpreter state [http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/sobel/rop.html]. In the case of usual programs the information about itself (i.e the program) is lost as soon as it finishes compilation ,but in Reflection the program (object) needs to have information about its structures. This is done by storing it in the form of metadata[http://en.wikipedia.org/wiki/Metadata].&lt;br /&gt;
&lt;br /&gt;
There are two types of reflection based on its dynamic nature.Few programs support reflection during compilation. They are called as compile time or static reflection. Runtime reflections are those which are carried on during runtime and its the usual form of reflections.&lt;br /&gt;
&lt;br /&gt;
Example of Reflections:&lt;br /&gt;
&lt;br /&gt;
A simple ruby code does enough to understand the concept behind reflections&lt;br /&gt;
&lt;br /&gt;
 puts 12.kind_of?&lt;br /&gt;
&lt;br /&gt;
The above code dynamically finds out what kind is 12 ? It returns the value integer. Thus reflection is done in ruby code to carry out operations during runtime with metaprogramming[http://en.wikipedia.org/wiki/Metaprogramming] enabled.&lt;br /&gt;
&lt;br /&gt;
=== '''Reflection Oriented Program as Paradigm''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reflection oriented paradigm is a new paradigm used as an extension to the object oriented paradigm. It adds various features meeting the need of various applications and its very flexible. Its a dynamic run time paradigm unlike object oriented and procedure oriented model. In this paradigm objects can be varied and modified according to the needs during the run time rather than creating static set of codes with a predetermined set of operations. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The dynamic decision in this paradigm is decided based up on the data being processed and the manipulation performed on those data sets.Here is where the knowledge about its own structure plays a crucial role. On considering an example wherein a program needs to change dynamically on various sets of data (find an instance of that data or length) ,intercepting the interpreters becomes important. In these cases the program should consist of codes just to identify the data and to decide the operations to be performed on them.&lt;br /&gt;
&lt;br /&gt;
=== '''Concepts''' ===&lt;br /&gt;
&lt;br /&gt;
The concept of reflection oriented programming is based up on the extension of object oriented program to dynamically shape the program based on its data. All the computations can be divided in to two categories.ATOMIC and COMPOUND.Atomic refers to when the computation is completed in a single logical step whereas compound refers to the computation that requires the completion of sub computation&lt;br /&gt;
&lt;br /&gt;
To make the concept work as described earlier a new entity called metainformation(information about information) is introduced.It takes into account of the details contained in the meta level.It acts as a storage wherein it contains the metainformation. It changes as the state changes and its designed to hold the metainformation of the current state.On encountering data it derives the information of the state, processes it and triggers the state change. These operations are performed during runtime&lt;br /&gt;
&lt;br /&gt;
=== '''Reflectives''' ===&lt;br /&gt;
&lt;br /&gt;
A reflective does the job of describing the behavior of metainformation. The current state of meta information is reflected by the instances of reflectives or objects of reflectives. Reflectives can be broadly classified in to two catgories. Simple reflective and Control reflective.Simple reflective contains the computational concepts whereas Control reflectives contains concept related to flow and control.&lt;br /&gt;
&lt;br /&gt;
There is a subcategory of simple reflectives that is designed to contain the meanings of the expressed values. Its called as value reflectives. The common notation for expressing relative is &amp;lt;reflective&amp;gt;.Numerous examples of reflectives can be found here [http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/sobel/rop.html]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Examples and Scenerios''' ===&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=22828</id>
		<title>CSC/ECE 517 Fall 2009/wiki2 8 RP</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=22828"/>
		<updated>2009-10-08T02:29:21Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* '''Reflectives''' */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Reflection Oriented Programming'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Definition == &lt;br /&gt;
&lt;br /&gt;
Reflection is a process of reasoning about and acting up on by itself [http://portal.acm.org/citation.cfm?id=62083.62111]. Throwing more clarity we can presume reflection as a computer code which can be dynamically modified in the process of execution. The dynamic modification depends on the code features and its run time behavior.A system which exhibits such reflective behavior is called as reflection oriented system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview == &lt;br /&gt;
&lt;br /&gt;
This Article throws light up on what Reflection Oriented programme is about. It deals with the need for such dynamic aspect and how it is useful in satisfying the practical needs.Further it highlights the research work that is carried out in this area and scope for future improvements.&lt;br /&gt;
&lt;br /&gt;
== Reflection oriented programming – Insights == &lt;br /&gt;
&lt;br /&gt;
=== '''Reflection''' ===&lt;br /&gt;
&lt;br /&gt;
Reflection is the process of converting a programmatically expressed value into a component of interpreter state [http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/sobel/rop.html]. In the case of usual programs the information about itself (i.e the program) is lost as soon as it finishes compilation ,but in Reflection the program (object) needs to have information about its structures. This is done by storing it in the form of metadata[http://en.wikipedia.org/wiki/Metadata].&lt;br /&gt;
&lt;br /&gt;
There are two types of reflection based on its dynamic nature.Few programs support reflection during compilation. They are called as compile time or static reflection. Runtime reflections are those which are carried on during runtime and its the usual form of reflections.&lt;br /&gt;
&lt;br /&gt;
Example of Reflections:&lt;br /&gt;
&lt;br /&gt;
A simple ruby code does enough to understand the concept behind reflections&lt;br /&gt;
&lt;br /&gt;
 puts 12.kind_of?&lt;br /&gt;
&lt;br /&gt;
The above code dynamically finds out what kind is 12 ? It returns the value integer. Thus reflection is done in ruby code to carry out operations during runtime with metaprogramming[http://en.wikipedia.org/wiki/Metaprogramming] enabled.&lt;br /&gt;
&lt;br /&gt;
=== '''Reflection Oriented Program as Paradigm''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reflection oriented paradigm is a new paradigm used as an extension to the object oriented paradigm. It adds various features meeting the need of various applications and its very flexible. Its a dynamic run time paradigm unlike object oriented and procedure oriented model. In this paradigm objects can be varied and modified according to the needs during the run time rather than creating static set of codes with a predetermined set of operations. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The dynamic decision in this paradigm is decided based up on the data being processed and the manipulation performed on those data sets.Here is where the knowledge about its own structure plays a crucial role. On considering an example wherein a program needs to change dynamically on various sets of data (find an instance of that data or length) ,intercepting the interpreters becomes important. In these cases the program should consist of codes just to identify the data and to decide the operations to be performed on them.&lt;br /&gt;
&lt;br /&gt;
=== '''Concepts''' ===&lt;br /&gt;
&lt;br /&gt;
The concept of reflection oriented programming is based up on the extension of object oriented program to dynamically shape the program based on its data. All the computations can be divided in to two categories.ATOMIC and COMPOUND.Atomic refers to when the computation is completed in a single logical step whereas compound refers to the computation that requires the completion of sub computation&lt;br /&gt;
&lt;br /&gt;
To make the concept work as described earlier a new entity called metainformation(information about information) is introduced.It takes into account of the details contained in the meta level.It acts as a storage wherein it contains the metainformation. It changes as the state changes and its designed to hold the metainformation of the current state.On encountering data it derives the information of the state, processes it and triggers the state change. These operations are performed during runtime&lt;br /&gt;
&lt;br /&gt;
=== '''Reflectives''' ===&lt;br /&gt;
&lt;br /&gt;
A reflective does the job of describing the behavior of metainformation. The current state of meta information is reflected by the instances of reflectives or objects of reflectives. Reflectives can be broadly classified in to two catgories. Simple reflective and Control reflective.Simple reflective contains the computational concepts whereas Control reflectives contains concept related to flow and control.&lt;br /&gt;
&lt;br /&gt;
There is a subcategory of simple reflectives that is designed to contain the meanings of the expressed values. Its called as value reflectives. The common notation for expressing relative is &amp;lt;reflective&amp;gt;.Numerous examples of reflectives can be found here [http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/sobel/rop.html]&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=22827</id>
		<title>CSC/ECE 517 Fall 2009/wiki2 8 RP</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=22827"/>
		<updated>2009-10-08T02:29:09Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* '''Reflectives''' */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Reflection Oriented Programming'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Definition == &lt;br /&gt;
&lt;br /&gt;
Reflection is a process of reasoning about and acting up on by itself [http://portal.acm.org/citation.cfm?id=62083.62111]. Throwing more clarity we can presume reflection as a computer code which can be dynamically modified in the process of execution. The dynamic modification depends on the code features and its run time behavior.A system which exhibits such reflective behavior is called as reflection oriented system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview == &lt;br /&gt;
&lt;br /&gt;
This Article throws light up on what Reflection Oriented programme is about. It deals with the need for such dynamic aspect and how it is useful in satisfying the practical needs.Further it highlights the research work that is carried out in this area and scope for future improvements.&lt;br /&gt;
&lt;br /&gt;
== Reflection oriented programming – Insights == &lt;br /&gt;
&lt;br /&gt;
=== '''Reflection''' ===&lt;br /&gt;
&lt;br /&gt;
Reflection is the process of converting a programmatically expressed value into a component of interpreter state [http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/sobel/rop.html]. In the case of usual programs the information about itself (i.e the program) is lost as soon as it finishes compilation ,but in Reflection the program (object) needs to have information about its structures. This is done by storing it in the form of metadata[http://en.wikipedia.org/wiki/Metadata].&lt;br /&gt;
&lt;br /&gt;
There are two types of reflection based on its dynamic nature.Few programs support reflection during compilation. They are called as compile time or static reflection. Runtime reflections are those which are carried on during runtime and its the usual form of reflections.&lt;br /&gt;
&lt;br /&gt;
Example of Reflections:&lt;br /&gt;
&lt;br /&gt;
A simple ruby code does enough to understand the concept behind reflections&lt;br /&gt;
&lt;br /&gt;
 puts 12.kind_of?&lt;br /&gt;
&lt;br /&gt;
The above code dynamically finds out what kind is 12 ? It returns the value integer. Thus reflection is done in ruby code to carry out operations during runtime with metaprogramming[http://en.wikipedia.org/wiki/Metaprogramming] enabled.&lt;br /&gt;
&lt;br /&gt;
=== '''Reflection Oriented Program as Paradigm''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reflection oriented paradigm is a new paradigm used as an extension to the object oriented paradigm. It adds various features meeting the need of various applications and its very flexible. Its a dynamic run time paradigm unlike object oriented and procedure oriented model. In this paradigm objects can be varied and modified according to the needs during the run time rather than creating static set of codes with a predetermined set of operations. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The dynamic decision in this paradigm is decided based up on the data being processed and the manipulation performed on those data sets.Here is where the knowledge about its own structure plays a crucial role. On considering an example wherein a program needs to change dynamically on various sets of data (find an instance of that data or length) ,intercepting the interpreters becomes important. In these cases the program should consist of codes just to identify the data and to decide the operations to be performed on them.&lt;br /&gt;
&lt;br /&gt;
=== '''Concepts''' ===&lt;br /&gt;
&lt;br /&gt;
The concept of reflection oriented programming is based up on the extension of object oriented program to dynamically shape the program based on its data. All the computations can be divided in to two categories.ATOMIC and COMPOUND.Atomic refers to when the computation is completed in a single logical step whereas compound refers to the computation that requires the completion of sub computation&lt;br /&gt;
&lt;br /&gt;
To make the concept work as described earlier a new entity called metainformation(information about information) is introduced.It takes into account of the details contained in the meta level.It acts as a storage wherein it contains the metainformation. It changes as the state changes and its designed to hold the metainformation of the current state.On encountering data it derives the information of the state, processes it and triggers the state change. These operations are performed during runtime&lt;br /&gt;
&lt;br /&gt;
=== '''Reflectives''' ===&lt;br /&gt;
&lt;br /&gt;
A reflective does the job of describing the behavior of metainformation. The current state of meta information is reflected by the instances of reflectives or objects of reflectives. Reflectives can be broadly classified in to two catgories. Simple reflective and Control reflective.Simple reflective contains the computational concepts whereas Control reflectives contains concept related to flow and control.&lt;br /&gt;
&lt;br /&gt;
 There is a subcategory of simple reflectives that is designed to contain the meanings of the expressed values. Its called as value reflectives. The common notation for expressing relative is &amp;lt;reflective&amp;gt;.Numerous examples of reflectives can be found here [http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/sobel/rop.html]&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=22825</id>
		<title>CSC/ECE 517 Fall 2009/wiki2 8 RP</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=22825"/>
		<updated>2009-10-08T02:25:01Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* '''Reflectives''' */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Reflection Oriented Programming'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Definition == &lt;br /&gt;
&lt;br /&gt;
Reflection is a process of reasoning about and acting up on by itself [http://portal.acm.org/citation.cfm?id=62083.62111]. Throwing more clarity we can presume reflection as a computer code which can be dynamically modified in the process of execution. The dynamic modification depends on the code features and its run time behavior.A system which exhibits such reflective behavior is called as reflection oriented system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview == &lt;br /&gt;
&lt;br /&gt;
This Article throws light up on what Reflection Oriented programme is about. It deals with the need for such dynamic aspect and how it is useful in satisfying the practical needs.Further it highlights the research work that is carried out in this area and scope for future improvements.&lt;br /&gt;
&lt;br /&gt;
== Reflection oriented programming – Insights == &lt;br /&gt;
&lt;br /&gt;
=== '''Reflection''' ===&lt;br /&gt;
&lt;br /&gt;
Reflection is the process of converting a programmatically expressed value into a component of interpreter state [http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/sobel/rop.html]. In the case of usual programs the information about itself (i.e the program) is lost as soon as it finishes compilation ,but in Reflection the program (object) needs to have information about its structures. This is done by storing it in the form of metadata[http://en.wikipedia.org/wiki/Metadata].&lt;br /&gt;
&lt;br /&gt;
There are two types of reflection based on its dynamic nature.Few programs support reflection during compilation. They are called as compile time or static reflection. Runtime reflections are those which are carried on during runtime and its the usual form of reflections.&lt;br /&gt;
&lt;br /&gt;
Example of Reflections:&lt;br /&gt;
&lt;br /&gt;
A simple ruby code does enough to understand the concept behind reflections&lt;br /&gt;
&lt;br /&gt;
 puts 12.kind_of?&lt;br /&gt;
&lt;br /&gt;
The above code dynamically finds out what kind is 12 ? It returns the value integer. Thus reflection is done in ruby code to carry out operations during runtime with metaprogramming[http://en.wikipedia.org/wiki/Metaprogramming] enabled.&lt;br /&gt;
&lt;br /&gt;
=== '''Reflection Oriented Program as Paradigm''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reflection oriented paradigm is a new paradigm used as an extension to the object oriented paradigm. It adds various features meeting the need of various applications and its very flexible. Its a dynamic run time paradigm unlike object oriented and procedure oriented model. In this paradigm objects can be varied and modified according to the needs during the run time rather than creating static set of codes with a predetermined set of operations. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The dynamic decision in this paradigm is decided based up on the data being processed and the manipulation performed on those data sets.Here is where the knowledge about its own structure plays a crucial role. On considering an example wherein a program needs to change dynamically on various sets of data (find an instance of that data or length) ,intercepting the interpreters becomes important. In these cases the program should consist of codes just to identify the data and to decide the operations to be performed on them.&lt;br /&gt;
&lt;br /&gt;
=== '''Concepts''' ===&lt;br /&gt;
&lt;br /&gt;
The concept of reflection oriented programming is based up on the extension of object oriented program to dynamically shape the program based on its data. All the computations can be divided in to two categories.ATOMIC and COMPOUND.Atomic refers to when the computation is completed in a single logical step whereas compound refers to the computation that requires the completion of sub computation&lt;br /&gt;
&lt;br /&gt;
To make the concept work as described earlier a new entity called metainformation(information about information) is introduced.It takes into account of the details contained in the meta level.It acts as a storage wherein it contains the metainformation. It changes as the state changes and its designed to hold the metainformation of the current state.On encountering data it derives the information of the state, processes it and triggers the state change. These operations are performed during runtime&lt;br /&gt;
&lt;br /&gt;
=== '''Reflectives''' ===&lt;br /&gt;
&lt;br /&gt;
A reflective does the job of describing the behavior of metainformation. The current state of meta information is reflected by the instances of reflectives or objects of reflectives.Reflectives can be broadly classified in to two catgories. Simple reflective and Control reflective.Simple reflective contains the computational concepts whereas Control reflectives contains concept related to flow and control.&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=22820</id>
		<title>CSC/ECE 517 Fall 2009/wiki2 8 RP</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=22820"/>
		<updated>2009-10-08T02:08:24Z</updated>

		<summary type="html">&lt;p&gt;Beacon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Reflection Oriented Programming'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Definition == &lt;br /&gt;
&lt;br /&gt;
Reflection is a process of reasoning about and acting up on by itself [http://portal.acm.org/citation.cfm?id=62083.62111]. Throwing more clarity we can presume reflection as a computer code which can be dynamically modified in the process of execution. The dynamic modification depends on the code features and its run time behavior.A system which exhibits such reflective behavior is called as reflection oriented system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview == &lt;br /&gt;
&lt;br /&gt;
This Article throws light up on what Reflection Oriented programme is about. It deals with the need for such dynamic aspect and how it is useful in satisfying the practical needs.Further it highlights the research work that is carried out in this area and scope for future improvements.&lt;br /&gt;
&lt;br /&gt;
== Reflection oriented programming – Insights == &lt;br /&gt;
&lt;br /&gt;
=== '''Reflection''' ===&lt;br /&gt;
&lt;br /&gt;
Reflection is the process of converting a programmatically expressed value into a component of interpreter state [http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/sobel/rop.html]. In the case of usual programs the information about itself (i.e the program) is lost as soon as it finishes compilation ,but in Reflection the program (object) needs to have information about its structures. This is done by storing it in the form of metadata[http://en.wikipedia.org/wiki/Metadata].&lt;br /&gt;
&lt;br /&gt;
There are two types of reflection based on its dynamic nature.Few programs support reflection during compilation. They are called as compile time or static reflection. Runtime reflections are those which are carried on during runtime and its the usual form of reflections.&lt;br /&gt;
&lt;br /&gt;
Example of Reflections:&lt;br /&gt;
&lt;br /&gt;
A simple ruby code does enough to understand the concept behind reflections&lt;br /&gt;
&lt;br /&gt;
 puts 12.kind_of?&lt;br /&gt;
&lt;br /&gt;
The above code dynamically finds out what kind is 12 ? It returns the value integer. Thus reflection is done in ruby code to carry out operations during runtime with metaprogramming[http://en.wikipedia.org/wiki/Metaprogramming] enabled.&lt;br /&gt;
&lt;br /&gt;
=== '''Reflection Oriented Program as Paradigm''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reflection oriented paradigm is a new paradigm used as an extension to the object oriented paradigm. It adds various features meeting the need of various applications and its very flexible. Its a dynamic run time paradigm unlike object oriented and procedure oriented model. In this paradigm objects can be varied and modified according to the needs during the run time rather than creating static set of codes with a predetermined set of operations. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The dynamic decision in this paradigm is decided based up on the data being processed and the manipulation performed on those data sets.Here is where the knowledge about its own structure plays a crucial role. On considering an example wherein a program needs to change dynamically on various sets of data (find an instance of that data or length) ,intercepting the interpreters becomes important. In these cases the program should consist of codes just to identify the data and to decide the operations to be performed on them.&lt;br /&gt;
&lt;br /&gt;
=== '''Concepts''' ===&lt;br /&gt;
&lt;br /&gt;
The concept of reflection oriented programming is based up on the extension of object oriented program to dynamically shape the program based on its data. All the computations can be divided in to two categories.ATOMIC and COMPOUND.Atomic refers to when the computation is completed in a single logical step whereas compound refers to the computation that requires the completion of sub computation&lt;br /&gt;
&lt;br /&gt;
To make the concept work as described earlier a new entity called metainformation(information about information) is introduced.It takes into account of the details contained in the meta level.It acts as a storage wherein it contains the metainformation. It changes as the state changes and its designed to hold the metainformation of the current state.On encountering data it derives the information of the state, processes it and triggers the state change. These operations are performed during runtime&lt;br /&gt;
&lt;br /&gt;
=== '''Reflectives''' ===&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=22783</id>
		<title>CSC/ECE 517 Fall 2009/wiki2 8 RP</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=22783"/>
		<updated>2009-10-08T01:05:01Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* '''Concepts''' */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Reflection Oriented Programming'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Definition == &lt;br /&gt;
&lt;br /&gt;
Reflection is a process of reasoning about and acting up on by itself [http://portal.acm.org/citation.cfm?id=62083.62111]. Throwing more clarity we can presume reflection as a computer code which can be dynamically modified in the process of execution. The dynamic modification depends on the code features and its run time behavior.A system which exhibits such reflective behavior is called as reflection oriented system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview == &lt;br /&gt;
&lt;br /&gt;
This Article throws light up on what Reflection Oriented programme is about. It deals with the need for such dynamic aspect and how it is useful in satisfying the practical needs.Further it highlights the research work that is carried out in this area and scope for future improvements.&lt;br /&gt;
&lt;br /&gt;
== Reflection oriented programming – Insights == &lt;br /&gt;
&lt;br /&gt;
=== '''Reflection''' ===&lt;br /&gt;
&lt;br /&gt;
Reflection is the process of converting a programmatically expressed value into a component of interpreter state [http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/sobel/rop.html]. In the case of usual programs the information about itself (i.e the program) is lost as soon as it finishes compilation ,but in Reflection the program (object) needs to have information about its structures. This is done by storing it in the form of metadata[http://en.wikipedia.org/wiki/Metadata].&lt;br /&gt;
&lt;br /&gt;
There are two types of reflection based on its dynamic nature.Few programs support reflection during compilation. They are called as compile time or static reflection. Runtime reflections are those which are carried on during runtime and its the usual form of reflections.&lt;br /&gt;
&lt;br /&gt;
Example of Reflections:&lt;br /&gt;
&lt;br /&gt;
A simple ruby code does enough to understand the concept behind reflections&lt;br /&gt;
&lt;br /&gt;
 puts 12.kind_of?&lt;br /&gt;
&lt;br /&gt;
The above code dynamically finds out what kind is 12 ? It returns the value integer. Thus reflection is done in ruby code to carry out operations during runtime with metaprogramming[http://en.wikipedia.org/wiki/Metaprogramming] enabled.&lt;br /&gt;
&lt;br /&gt;
=== '''Reflection Oriented Program as Paradigm''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reflection oriented paradigm is a new paradigm used as an extension to the object oriented paradigm. It adds various features meeting the need of various applications and its very flexible. Its a dynamic run time paradigm unlike object oriented and procedure oriented model. In this paradigm objects can be varied and modified according to the needs during the run time rather than creating static set of codes with a predetermined set of operations. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The dynamic decision in this paradigm is decided based up on the data being processed and the manipulation performed on those data sets.Here is where the knowledge about its own structure plays a crucial role. On considering an example wherein a program needs to change dynamically on various sets of data (find an instance of that data or length) ,intercepting the interpreters becomes important. In these cases the program should consist of codes just to identify the data and to decide the operations to be performed on them.&lt;br /&gt;
&lt;br /&gt;
=== '''Concepts''' ===&lt;br /&gt;
&lt;br /&gt;
The concept of reflection oriented programming is based up on the extension of object oriented program to dynamically shape the program based on its data. All the computations can be divided in to two categories.ATOMIC and COMPOUND.Atomic refers to when the computation is completed in a single logical step whereas compound refers to the computation that requires the completion of sub computation&lt;br /&gt;
&lt;br /&gt;
To make the concept work as described earlier a new entity called meta nformation(information about information) is introduced.It takes into account of the details contained in the meta level.It acts as a storage wherein it contains the metainformation. It changes as the state changes and its designed to hold the metainformation of the current state.On encountering data it derives the information of the state, processes it and triggers the state change. These operations are performed during runtime&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=22781</id>
		<title>CSC/ECE 517 Fall 2009/wiki2 8 RP</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=22781"/>
		<updated>2009-10-08T01:03:40Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* '''Concepts''' */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Reflection Oriented Programming'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Definition == &lt;br /&gt;
&lt;br /&gt;
Reflection is a process of reasoning about and acting up on by itself [http://portal.acm.org/citation.cfm?id=62083.62111]. Throwing more clarity we can presume reflection as a computer code which can be dynamically modified in the process of execution. The dynamic modification depends on the code features and its run time behavior.A system which exhibits such reflective behavior is called as reflection oriented system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview == &lt;br /&gt;
&lt;br /&gt;
This Article throws light up on what Reflection Oriented programme is about. It deals with the need for such dynamic aspect and how it is useful in satisfying the practical needs.Further it highlights the research work that is carried out in this area and scope for future improvements.&lt;br /&gt;
&lt;br /&gt;
== Reflection oriented programming – Insights == &lt;br /&gt;
&lt;br /&gt;
=== '''Reflection''' ===&lt;br /&gt;
&lt;br /&gt;
Reflection is the process of converting a programmatically expressed value into a component of interpreter state [http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/sobel/rop.html]. In the case of usual programs the information about itself (i.e the program) is lost as soon as it finishes compilation ,but in Reflection the program (object) needs to have information about its structures. This is done by storing it in the form of metadata[http://en.wikipedia.org/wiki/Metadata].&lt;br /&gt;
&lt;br /&gt;
There are two types of reflection based on its dynamic nature.Few programs support reflection during compilation. They are called as compile time or static reflection. Runtime reflections are those which are carried on during runtime and its the usual form of reflections.&lt;br /&gt;
&lt;br /&gt;
Example of Reflections:&lt;br /&gt;
&lt;br /&gt;
A simple ruby code does enough to understand the concept behind reflections&lt;br /&gt;
&lt;br /&gt;
 puts 12.kind_of?&lt;br /&gt;
&lt;br /&gt;
The above code dynamically finds out what kind is 12 ? It returns the value integer. Thus reflection is done in ruby code to carry out operations during runtime with metaprogramming[http://en.wikipedia.org/wiki/Metaprogramming] enabled.&lt;br /&gt;
&lt;br /&gt;
=== '''Reflection Oriented Program as Paradigm''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reflection oriented paradigm is a new paradigm used as an extension to the object oriented paradigm. It adds various features meeting the need of various applications and its very flexible. Its a dynamic run time paradigm unlike object oriented and procedure oriented model. In this paradigm objects can be varied and modified according to the needs during the run time rather than creating static set of codes with a predetermined set of operations. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The dynamic decision in this paradigm is decided based up on the data being processed and the manipulation performed on those data sets.Here is where the knowledge about its own structure plays a crucial role. On considering an example wherein a program needs to change dynamically on various sets of data (find an instance of that data or length) ,intercepting the interpreters becomes important. In these cases the program should consist of codes just to identify the data and to decide the operations to be performed on them.&lt;br /&gt;
&lt;br /&gt;
=== '''Concepts''' ===&lt;br /&gt;
&lt;br /&gt;
The concept of reflection oriented programming is based up on the extension of object oriented program to dynamically shape the program based on its data. All the computations can be divided in to two categories.ATOMIC and COMPOUND.Atomic refers to when the computation is completed in a single logical step whereas compound refers to the computation that requires the completion of sub computation&lt;br /&gt;
&lt;br /&gt;
To make the concept work as described earlier a new entity called meta nformation(information about information) is introduced.It takes into account of the details contained in the meta level.It acts as a storage wherein it contains the metainformation. It changes as the state changes and designed to hold the metainformation of the current state.On encountering data it derives the information of the state and process it and trigger the state change. These operations are performed during runtime&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=22776</id>
		<title>CSC/ECE 517 Fall 2009/wiki2 8 RP</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=22776"/>
		<updated>2009-10-08T00:54:46Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* '''Concepts''' */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Reflection Oriented Programming'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Definition == &lt;br /&gt;
&lt;br /&gt;
Reflection is a process of reasoning about and acting up on by itself [http://portal.acm.org/citation.cfm?id=62083.62111]. Throwing more clarity we can presume reflection as a computer code which can be dynamically modified in the process of execution. The dynamic modification depends on the code features and its run time behavior.A system which exhibits such reflective behavior is called as reflection oriented system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview == &lt;br /&gt;
&lt;br /&gt;
This Article throws light up on what Reflection Oriented programme is about. It deals with the need for such dynamic aspect and how it is useful in satisfying the practical needs.Further it highlights the research work that is carried out in this area and scope for future improvements.&lt;br /&gt;
&lt;br /&gt;
== Reflection oriented programming – Insights == &lt;br /&gt;
&lt;br /&gt;
=== '''Reflection''' ===&lt;br /&gt;
&lt;br /&gt;
Reflection is the process of converting a programmatically expressed value into a component of interpreter state [http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/sobel/rop.html]. In the case of usual programs the information about itself (i.e the program) is lost as soon as it finishes compilation ,but in Reflection the program (object) needs to have information about its structures. This is done by storing it in the form of metadata[http://en.wikipedia.org/wiki/Metadata].&lt;br /&gt;
&lt;br /&gt;
There are two types of reflection based on its dynamic nature.Few programs support reflection during compilation. They are called as compile time or static reflection. Runtime reflections are those which are carried on during runtime and its the usual form of reflections.&lt;br /&gt;
&lt;br /&gt;
Example of Reflections:&lt;br /&gt;
&lt;br /&gt;
A simple ruby code does enough to understand the concept behind reflections&lt;br /&gt;
&lt;br /&gt;
 puts 12.kind_of?&lt;br /&gt;
&lt;br /&gt;
The above code dynamically finds out what kind is 12 ? It returns the value integer. Thus reflection is done in ruby code to carry out operations during runtime with metaprogramming[http://en.wikipedia.org/wiki/Metaprogramming] enabled.&lt;br /&gt;
&lt;br /&gt;
=== '''Reflection Oriented Program as Paradigm''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reflection oriented paradigm is a new paradigm used as an extension to the object oriented paradigm. It adds various features meeting the need of various applications and its very flexible. Its a dynamic run time paradigm unlike object oriented and procedure oriented model. In this paradigm objects can be varied and modified according to the needs during the run time rather than creating static set of codes with a predetermined set of operations. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The dynamic decision in this paradigm is decided based up on the data being processed and the manipulation performed on those data sets.Here is where the knowledge about its own structure plays a crucial role. On considering an example wherein a program needs to change dynamically on various sets of data (find an instance of that data or length) ,intercepting the interpreters becomes important. In these cases the program should consist of codes just to identify the data and to decide the operations to be performed on them.&lt;br /&gt;
&lt;br /&gt;
=== '''Concepts''' ===&lt;br /&gt;
&lt;br /&gt;
The concept of reflection oriented programming is based up on the extension of object oriented program to dynamically shape the program based on its data. All the computations can be divided in to two categories.ATOMIC and COMPOUND.Atomic refers to when the computation is completed in a single logical step whereas compound refers to the computation that requires the completion of sub computation&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=22774</id>
		<title>CSC/ECE 517 Fall 2009/wiki2 8 RP</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki2_8_RP&amp;diff=22774"/>
		<updated>2009-10-08T00:53:00Z</updated>

		<summary type="html">&lt;p&gt;Beacon: /* '''Concepts''' */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Reflection Oriented Programming'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Definition == &lt;br /&gt;
&lt;br /&gt;
Reflection is a process of reasoning about and acting up on by itself [http://portal.acm.org/citation.cfm?id=62083.62111]. Throwing more clarity we can presume reflection as a computer code which can be dynamically modified in the process of execution. The dynamic modification depends on the code features and its run time behavior.A system which exhibits such reflective behavior is called as reflection oriented system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview == &lt;br /&gt;
&lt;br /&gt;
This Article throws light up on what Reflection Oriented programme is about. It deals with the need for such dynamic aspect and how it is useful in satisfying the practical needs.Further it highlights the research work that is carried out in this area and scope for future improvements.&lt;br /&gt;
&lt;br /&gt;
== Reflection oriented programming – Insights == &lt;br /&gt;
&lt;br /&gt;
=== '''Reflection''' ===&lt;br /&gt;
&lt;br /&gt;
Reflection is the process of converting a programmatically expressed value into a component of interpreter state [http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/sobel/rop.html]. In the case of usual programs the information about itself (i.e the program) is lost as soon as it finishes compilation ,but in Reflection the program (object) needs to have information about its structures. This is done by storing it in the form of metadata[http://en.wikipedia.org/wiki/Metadata].&lt;br /&gt;
&lt;br /&gt;
There are two types of reflection based on its dynamic nature.Few programs support reflection during compilation. They are called as compile time or static reflection. Runtime reflections are those which are carried on during runtime and its the usual form of reflections.&lt;br /&gt;
&lt;br /&gt;
Example of Reflections:&lt;br /&gt;
&lt;br /&gt;
A simple ruby code does enough to understand the concept behind reflections&lt;br /&gt;
&lt;br /&gt;
 puts 12.kind_of?&lt;br /&gt;
&lt;br /&gt;
The above code dynamically finds out what kind is 12 ? It returns the value integer. Thus reflection is done in ruby code to carry out operations during runtime with metaprogramming[http://en.wikipedia.org/wiki/Metaprogramming] enabled.&lt;br /&gt;
&lt;br /&gt;
=== '''Reflection Oriented Program as Paradigm''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reflection oriented paradigm is a new paradigm used as an extension to the object oriented paradigm. It adds various features meeting the need of various applications and its very flexible. Its a dynamic run time paradigm unlike object oriented and procedure oriented model. In this paradigm objects can be varied and modified according to the needs during the run time rather than creating static set of codes with a predetermined set of operations. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The dynamic decision in this paradigm is decided based up on the data being processed and the manipulation performed on those data sets.Here is where the knowledge about its own structure plays a crucial role. On considering an example wherein a program needs to change dynamically on various sets of data (find an instance of that data or length) ,intercepting the interpreters becomes important. In these cases the program should consist of codes just to identify the data and to decide the operations to be performed on them.&lt;br /&gt;
&lt;br /&gt;
=== '''Concepts''' ===&lt;br /&gt;
&lt;br /&gt;
The concept of reflection oriented programming is based up on the extension of object oriented program to dynamically shape the program based on its data. All the computations can be divided in to two categories.&lt;br /&gt;
&lt;br /&gt;
- atomic - The computation is completed in a single logical step.[http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/sobel/rop.html]&lt;br /&gt;
and compound - The computation requires the completion of sub computations.[http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/sobel/rop.html]&lt;/div&gt;</summary>
		<author><name>Beacon</name></author>
	</entry>
</feed>