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.

Factory method pattern in Java

The factory method pattern is an object-oriented design pattern to implement the concept of factories. Like other creational patterns, it deals with the problem of creating objects (products) without specifying the exact class of object that will be created. The creation of an object often requires complex processes not appropriate to include within a composing object. The object’s creation may lead to a significant duplication of code, may require information not accessible to the composing object, may not provide a sufficient level of abstraction, or may otherwise not be part of the composing object’s concerns. The factory method design pattern handles these problems by defining a separate method for creating the objects, which subclasses can then override to specify the derived type of product that will be created.

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

The essence of the Factory method Pattern is to “Define an interface for creating an object, but let the subclasses decide which class to instantiate. The Factory method lets a class defer instantiation to subclasses

Use the factory pattern when:

  • The creation of the object precludes reuse without significantly duplicating code.
  • The creation of the object requires access to information or resources not appropriate to contain within the composing object.
  • The lifetime management of created objects needs to be centralised to ensure consistent behavior.

printSomething.java

package techartifact.pattern.factory;

public abstract class PrintSomething {

public abstract void printTech();
}

Now we will have the concrete implementations of the PrintSomething class, JavaTech and J2eeTech, each providing a much simplified implementation for the printTech() method.

JavaTech.java

package techartifact.pattern.factory;

public class JavaTech extends PrintSomething {
@Override
 public void printTech()
 {
 System.out.println("this is java technology");
 }
}

We will having one more class for j2eeTech for j2ee technology.
J2eeTech.java

package techartifact.pattern.factory;

public class J2eeTech extends PrintSomething {
 public void printTech()
 {
     System.out.println("this is j2ee technology");
 }
}

Now let us come to the core implementation, the Factory class itself. The PrintFactory class has one static method called showPrint() which the clients can invoke to get the PrintSomething object. Note the return type of the method, it is neither JavaTech nor J2eeTech, but the super type of the both, i.e, PrintSomething. Whether the return type of method is JavaTech or J2eeTech is decided based on the input operating system.

PrintFactory.java

package techartifact.pattern.factory;

public class PrintFactory {

public static PrintSomething showPrint(String os){

   if (os.equals("Java"))
  {

        return new JavaTech();

  }
   else if (os.equals("J2ee"))
  {

    return new J2eeTech();

  }

return null

 }

}

In this we can makes use of the above PrintFactory class. The client is un-aware of the fact there is multiple implementations of the PrintSomething class. It accesses the printTech() operation through a single unified type PrintSomething

FactoryClient.java

package techartifact.pattern.factory;

public class FactoryClient {

  public static void main(String[] args) {

             PrintSomething psJava =PrintFactory.showPrint("Java");

             psJava.printTech();

             PrintSomething psJ2ee = PrintFactory.showPrint("J2ee");

             psJ2ee.printTech();

   }
}