Builder pattern in Java

Builder falls under the type of creational pattern category. Builder pattern helps us to separate the construction of a complex object from its representation so that the same construction process can create different representations. Builder pattern is useful when the construction of the object is very complex. The main objective is to separate the construction of objects and their representations. If we are able to separate the construction and representation, we can then get many representations from the same construction.

Figure: – Builder concept

To understand what we mean by construction and representation lets take the example of the below ‘Tea preparation’ sequence.

You can see from the figure ‘Tea preparation’ from the same preparation steps we can get three representation of tea’s (i.e. Tea with out sugar, tea with sugar / milk and tea with out milk).

Figure: – Tea preparation

Now let’s take a real time example in software world to see how builder can separate the complex creation and its representation. Consider we have application where we need the same report to be displayed in either ‘PDF’ or ‘EXCEL’ format. Figure ‘Request a report’ shows the series of steps to achieve the same. Depending on report type a new report is created, report type is set, headers and footers of the report are set and finally we get the report for display.

 

Figure: – Request a report

Now let’s take a different view of the problem as shown in figure ‘Different View’. The same flow defined in ‘Request a report’ is now analyzed in representations and common construction. The construction process is same for both the types of reports but they result in different representations.

Figure: – Different View

We will take the same report problem and try to solve the same using builder patterns. There are three main parts when you want to implement builder patterns.

• Builder: – Builder is responsible for defining the construction process for individual parts. Builder has those individual processes to initialize and configure the product.
• Director: – Director takes those individual processes from the builder and defines the sequence to build the product.
• Product: – Product is the final object which is produced from the builder and director coordination.

First let’s have a look at the builder class hierarchy. We have a abstract class called as ‘ReportBuilder’ from which custom builders like ‘ReportPDF’ builder and ‘ReportEXCEL’ builder will be built.

 

Figure: – Builder class hierarchy

Figure ‘Builder classes in actual code’ shows the methods of the classes. To generate report we need to first Create a new report, set the report type (to EXCEL or PDF) , set report headers , set the report footers and finally get the report. We have defined two custom builders one for ‘PDF’ (ReportPDF) and other for ‘EXCEL’ (ReportExcel). These two custom builders define there own process according to the report type.

Figure: – Builder classes in actual code

Now let’s understand how director will work. Class ‘clsDirector’ takes the builder and calls the individual method process in a sequential manner. So director is like a driver who takes all the individual processes and calls them in sequential manner to generate the final product, which is the report in this case. Figure ‘Director in action’ shows how the method ‘MakeReport’ calls the individual process to generate the report product by PDF or EXCEL.

The third component in the builder is the product which is nothing but the report class in this case.

 

Figure: – The report class

Now let’s take a top view of the builder project. Figure ‘Client,builder,director and product’ shows how they work to achieve the builder pattern. Client creates the object of the director class and passes the appropriate builder to initialize the product. Depending on the builder the product is initialized/created and finally sent to the client.

Figure: – Client, builder, director and product 

The output is something like this. We can see two report types displayed with their headers according to the builder.

Figure: – Final output of builder

 

 

Source -http://ashishkhandelwal.arkutil.com/?p=1076

Pin it

Three main categories of design patterns?


There are three basic classifications of patterns Creational, Structural, and Behavioral patterns.
Creational Patterns

• Abstract Factory:- Creates an instance of several families of classes
• Builder: – Separates object construction from its representation
• Factory Method:- Creates an instance of several derived classes
• Prototype:- A fully initialized instance to be copied or cloned
• Singleton:- A class in which only a single instance can exist

Note: – The best way to remember Creational pattern is by ABFPS (Abraham Became First President of States).
Structural Patterns

• Adapter:-Match interfaces of different classes.
• Bridge:-Separates an object’s abstraction from its implementation.
• Composite:-A tree structure of simple and composite objects.
• Decorator:-Add responsibilities to objects dynamically.
• Façade:-A single class that represents an entire subsystem.
• Flyweight:-A fine-grained instance used for efficient sharing.
• Proxy:-An object representing another object.

Note : To remember structural pattern best is (ABCDFFP)
Behavioral Patterns

• Mediator:-Defines simplified communication between classes.
• Memento:-Capture and restore an object’s internal state.
• Interpreter:- A way to include language elements in a program.
• Iterator:-Sequentially access the elements of a collection.
• Chain of Resp: – A way of passing a request between a chain of objects.
• Command:-Encapsulate a command request as an object.
• State:-Alter an object’s behavior when its state changes.
• Strategy:-Encapsulates an algorithm inside a class.
• Observer: – A way of notifying change to a number of classes.
• Template Method:-Defer the exact steps of an algorithm to a subclass.
• Visitor:-Defines a new operation to a class without change.

Note: – Just remember Music……. 2 MICS On TV (MMIICCSSOTV).

Oracle ADF interview Question part-2

Hi all , here again I came up with most awaited article .This is part oracle Adf interview Question part-two.I have accumulated ,formulated, and gathered these information from various sources.So that it would be helpful for Oracle ADF community.

But I am afraid of Mr. Saravanan of jdeveloperandadf.blogspot.com ,who again not try to copy paste the content of my post as he did for part -1.Even after my many reply to him.he don’t bothered to give original URL or remove the content of my blog.

You can see

Original post (my blog)-https://www.techartifact.com/blogs/2011/04/oracle-adf-interview-question-part-1.html

he copied the content-http://jdeveloperandadf.blogspot.com/2011/02/oracle-adf-interview-questions-and.html

Well these are following Question  for part -2

Q:Describe Oracle ADF Architecture?

Ans:In line with community best practices, applications you build using the Fusion web technology stack achieve a clean separation of business logic, page navigation, and user interface by adhering to a model-view-controller architecture. As shown in in an MVC architecture:

The model layer represents the data values related to the current page The view layer contains the UI pages used to view or modify that data The controller layer processes user input and determines page navigation.The business service layer handles data access and encapsulates business logic


Oracle ADF Business Components, which simplifies building business services.

Oracle ADF Faces rich client, which offers a rich library of AJAX-enabled UI components for web applications built with JavaServer Faces (JSF).

Oracle ADF Controller, which integrates JSF with Oracle ADF Model. The ADF Controller extends the standard JSF controller by providing additional functionality, such as reusable task flows that pass control not only between JSF pages, but also between other activities, for instance method calls or other task flows.

Simple Oracle ADF Architecture

Q: What is Association and Viewlink ?

Ans: They define the join or the link among EO’s and VO’s.Association defines link between EO’s.They can be considered as PrimaryKey/ForeignKey relationship between tables.
The Viewlink is for a VO.It defines the Join conditions.A viewlink can be based on an association or based on attributes,Basing viewlinks on associations have the same advantage of entity cache and few more which are unveiled later.

Q:What is  the Business Component Tester

ans:The mostly used component of the model layer is the tester, which is used to run and check the data model that is implemented.This serves as the first line of defense to see if data is exposed as we need it and to test the data model with out a need to create a UI.

Q: What is task flow?

Ans: ADF task flows provide a modular approach for defining control flow in an application.Instead of representing an application as a single large JSF page flow, you can break it up into a collection of reusable task flows. Each task flow contains a portion of the application’s navigational graph. The nodes in the task flows are activities. An activity node represents a simple logical operation such as displaying a page, executing application logic, or calling another task flow. The transactions between the activities are called control flow cases

https://www.techartifact.com/blogs/2011/07/basic-of-task-flow-in-oracle-adf.html

 Q: Advantage of Task Flow Over JSF flow?

 Ans: ADF task flows offer significant advantages over standard JSF page flows

  • The application can be broken up into a series of modular flows that call one another.
  • You can add to the task flow diagram nodes such as views, method calls, and calls to other task flows.
  • Navigation is between pages as well as other activities, including routers.
  • ADF task flows are reusable within the same or an entirely different application.After you break up your application into task flows, you may decide to reuse task
  • Shared memory scope (for example, page flow scope) enables data to be passed between activities within the task flow. Page flow scope defines a unique storage area for each instance of an ADF bounded task flow.

  Q:   What are type of task flow?

 Ans: The two types of ADF task flow are:

■ Unbounded task flow: A set of activities, control flow rules, and managed beans that interact to allow a user to complete a task. An ADF unbounded task flow consists of all activities and control flows in an application that are not included within any bounded task flow.

■ Bounded task flow: A specialized form of task flow that, in contrast to an unbounded task flow, has a single entry point and zero or more exit points. It contains its own set of private control flow rules, activities, and managed beans. An ADF bounded task flow allows reuse, parameters, transaction management,and reentry. An ADF bounded task flow is used to encapsulate a reusable portion of an application. A bounded task flow is similar to a Java method in that it:

■ Has a single entry point

■ May accept input parameters

■ May generate return values

■ Has its own collection of activities and control flow rules

■ Has its own memory scope and managed bean lifespan (a page flow scope instance)

A bounded task flow can call another bounded task flow, which can call another and so on. There is no limit to the depth of the calls.The checkout process is created as a separate ADF bounded task flow, as shown

Q: What are different memory scope in ADF Managed Beans.?

Ans: Please read this link

https://www.techartifact.com/blogs/2012/07/different-memory-scope-in-oracle-adf.html

Q: What is region in Task Flow?

Ans: You can render a bounded task flow in a JSF page or page fragment (.jsff) by using an ADF region. An ADF region comprises the following. You create an ADF region by dragging and dropping a bounded task flow that contains at least one view activity or one task flow call activity to the page where you want to render the ADF region. This makes sure that the ADF region you create has  content to display at runtime

Q: What is Association Accessor?

Ans: It’s an operation by which an entity instance at one end of and association can access the related entity  object  instance at the other end of the association. An Accessor that travels from destination to source is called a source accessor  and an accessor that travel from source to destination is called a destination accessor.

It is described in the entity object definition xml files which can be used by view object and view link definition to specify cross entity relationship. Its return type will be the entity object class of associated entity object definition or ‘EntityImpl’ if the associated entity object definition has no entity object class.

Q: What are different data control scope?

Ans:

1)     Isolated:

2)    Shared(Default)-Data is shared with the parent flow.

Q: What are different Task Flow Component?

Ans:
https://www.techartifact.com/blogs/2012/07/q-what-are-different-task-flow-component.html

      Q: What is application module pooling and how we can handle it.

  Ans: Still trying to find more info in this .

But as of now you can go http://andrejusb.blogspot.com/2010/02/optimizing-oracle-adf-application-pool.html

Hey I am not able to accumulate all question which can be part of this thread.If you have more question .You can put in comments.I will edit this article and we can have collect all in single place.