Dp Composite
DodaTech
1 min read
In this tutorial, you'll learn about How to Fix Composite Errors. We cover key concepts, practical examples, and best practices.
Fix composite errors when leaf and composite treated differently requiring type checking.
Quick Fix
Wrong
class File:
def __init__(self,n): self.name=n
def ls(self): print(self.name)
class Dir:
def __init__(self,n):
self.name=n; self.children=[]
def ls(self):
print(self.name)
for c in self.children:
if isinstance(c,File): c.ls()
else: c.ls() # still works but type-specific logic elsewhere
Client must check type. Adding new Component type requires updating all call sites.
Right
class Component:
def __init__(self,n): self.name=n
def ls(self): print(self.name)
class File(Component): pass
class Dir(Component):
def __init__(self,n):
super().__init__(n); self.children=[]
def add(self,c): self.children.append(c)
def ls(self):
print(self.name); [c.ls() for c in self.children]
root=Dir('root'); root.add(File('a.txt')); root.ls(). Leaf and Dir treated uniformly.
Prevention
Composite lets clients treat individual objects and compositions uniformly. Same interface for leaf and composite.
DodaTech Tools
Doda Browser's algorithm visualizer steps through DSA operations line by line. DodaZIP archives implementation patterns for team sharing. Durga Antivirus Pro detects memory corruption patterns in algorithm implementations.
FAQ
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro