☕️JAVA Language Community
2.91K subscribers
144 photos
7 videos
31 files
42 links
☕️ Software, IT, Java, news
💻 IT highlights
🎯 AI update
🖥⌨️🖱
Download Telegram
#Composite_Design_Pattern

👉Example

The Composite composes objects into tree structures and lets clients treat individual objects and compositions uniformly. Although the example is abstract, arithmetic expressions are Composites. An arithmetic expression consists of an operand, an operator (+ - * /), and another operand. The operand can be a number, or another arithmetic expression. Thus, 2 + 3 and (2 + 3) + (4 * 6) are both valid expressions.

@javaCode☕️
#Java_Interview_Question

137) What is the difference between Iterator and ListIterator?

Iterator traverses the elements in forward direction only whereas ListIterator traverses the elements in forward and backward direction.

1) Iterator traverses the elements in forward direction only. ListIterator traverses the elements in backward and forward directions both.
2) Iterator can be used in List, Set and Queue. ListIterator can be used in List only.

@javaCode☕️
👍1
#Java_Interview_Question

138) What is the difference between Iterator and Enumeration?

1) Iterator can traverse legacy and non-legacy elements.
Enumeration can traverse only legacy elements.
2) Iterator is fail-fast.
Enumeration is not fail-fast.
3) Iterator is slower than Enumeration.
Enumeration is faster than Iterator.

@javaCode☕️
#Composite_Design_Pattern

👉Check list

1️⃣Ensure that your problem is about representing "whole-part" hierarchical relationships.

2️⃣Consider the heuristic, "Containers that contain containees, each of which could be a container." For example, "Assemblies that contain components, each of which could be an assembly." Divide your domain concepts into container classes, and containee classes.

3️⃣Create a "lowest common denominator" interface that makes your containers and containees interchangeable. It should specify the behavior that needs to be exercised uniformly across all containee and container objects.

4️⃣All container and containee classes declare an "is a" relationship to the interface.

5️⃣All container classes declare a one-to-many "has a" relationship to the interface.

6️⃣Container classes leverage polymorphism to delegate to their containee objects.

7️⃣Child management methods [e.g. addChild(), removeChild()] should normally be defined in the Composite class. Unfortunately, the desire to treat Leaf and Composite objects uniformly may require that these methods be promoted to the abstract Component class. See the Gang of Four for a discussion of these "safety" versus "transparency" trade-offs.

@javaCode☕️
#Composite_Design_Pattern

👉Rules of thumb

1️⃣Composite and Decorator have similar structure diagrams, reflecting the fact that both rely on recursive composition to organize an open-ended number of objects.

2️⃣Composite can be traversed with Iterator. Visitor can apply an operation over a Composite. Composite could use Chain of Responsibility to let components access global properties through their parent. It could also use Decorator to override these properties on parts of the composition. It could use Observer to tie one object structure to another and State to let a component change its behavior as its state changes.

3️⃣Composite can let you compose a Mediator out of smaller pieces through recursive composition.

4️⃣Decorator is designed to let you add responsibilities to objects without subclassing. Composite's focus is not on embellishment but on representation. These intents are distinct but complementary. Consequently, Composite and Decorator are often used in concert.

5️⃣Flyweight is often combined with Composite to implement shared leaf nodes.

@javaCode☕️
👍1
#Java_Interview_Question

139) What is the difference between List and Set?

List can contain duplicate elements whereas Set contains only unique elements.

@javaCode☕️
👍1
#Java_Interview_Question

140) What is the difference between HashSet and TreeSet?

HashSet maintains no order whereas TreeSet maintains ascending order.

@javaCode☕️
#Java_Interview_Question

141) What is the difference between Set and Map?

Set contains values only whereas Map contains key and values both.

@javaCode☕️
👍2
#Java_Interview_Question

142) What is the difference between HashSet and HashMap?

HashSet contains only values whereas HashMap contains entry(key,value). HashSet can be iterated but HashMap need to convert into Set to be iterated.

@javaCode☕️
#Composite_Design_Pattern

👉Opinions

The whole point of the Composite pattern is that the Composite can be treated atomically, just like a leaf. If you want to provide an Iterator protocol, fine, but I think that is outside the pattern itself. At the heart of this pattern is the ability for a client to perform operations on an object without needing to know that there are many objects inside.

☑️to be continued...

@javaCode☕️
☕️JAVA Language Community
#Composite_Design_Pattern 👉Opinions The whole point of the Composite pattern is that the Composite can be treated atomically, just like a leaf. If you want to provide an Iterator protocol, fine, but I think that is outside the pattern itself. At the heart…
👉Opinion

Being able to treat a heterogeneous collection of objects atomically (or transparently) requires that the "child management" interface be defined at the root of the Composite class hierarchy (the abstract Component class). However, this choice costs you safety, because clients may try to do meaningless things like add and remove objects from leaf objects. On the other hand, if you "design for safety", the child management interface is declared in the Composite class, and you lose transparency because leaves and Composites now have different interfaces.

Smalltalk implementations of the Composite pattern usually do not have the interface for managing the components in the Component interface, but in the Composite interface. C++ implementations tend to put it in the Component interface. This is an extremely interesting fact, and one that I often ponder. I can offer theories to explain it, but nobody knows for sure why it is true.

☑️to be continued...

@javaCode☕️
#Java_Interview_Question

143) What is the difference between HashMap and TreeMap?

HashMap maintains no order but TreeMap maintains ascending order.

@javaCode☕️
#Java_Interview_Question

144) What is the difference between HashMap and Hashtable?

1) HashMap is not synchronized. Hashtable is synchronized.
2) HashMap can contain one null key and multiple null values.

@javaCode☕️
👍1
@javaCode☕️
👍1