


How Can Refactoring Eliminate Friend Dependencies in Shared Resource Management?
Nov 05, 2024 pm 12:04 PMFriend Dependency Removal and Refactoring in a Shared Resource Management Design
In object-oriented design, the "friend" dependency introduces a tight coupling between classes and raises maintenance concerns. To remove such dependencies while maintaining the functionality of a shared resource management design, a multi-step refactoring process is recommended.
Step 1: Introduce an Abstract Interface
The initial step involves replacing the "friend" dependency with an abstract interface, InternalInterface, which defines the operations previously accessible only to the friendly class.
Step 2: Move Operations to the Interface
The operations that constituted the "call" dependency are shifted from the ClassA implementation to the InternalInterface definition.
Step 3: Connect Interface and Implementation
To provide access to the InternalInterface, introduce a protected constructor and protected generalization relationship between ClassA and InternalInterface.
Step 4: Glue the Components
In the ClassAAccessor constructor, introduce a setInternalInterfaceRef() method that allows ClassAAccessor to obtain a reference to InternalInterface from ClassA.
Step 5: Use Internal Interface for Access
Implement the attachAccessor() method in ClassA to pass the internal interface reference to ClassAAccessor.
Step 6: Optimize Coupling (Optional)
For further decoupling, introduce a second interface, InternalClientInterface, to mediate between ClassAAccessor and InternalInterface.
Advantages:
- Eliminates the "friend" dependency according to UML 2.2 standards.
- Complies with coding guidelines that discourage "friend" usage.
- Provides a more explicit and maintainable design.
Disadvantages:
- May increase code complexity.
- Requires abstract interfaces that potentially affect the footprint of the design.
- Protected generalization relationships have limited UML representation support.
The above is the detailed content of How Can Refactoring Eliminate Friend Dependencies in Shared Resource Management?. For more information, please follow other related articles on the PHP Chinese website!

Hot Article

Hot tools Tags

Hot Article

Hot Article Tags

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

C language function format letter case conversion steps

What are the types of values returned by c language functions? What determines the return value?

What are the definitions and calling rules of c language functions and what are the

How does the C Standard Template Library (STL) work?

Where is the return value of the c language function stored in memory?

How do I use algorithms from the STL (sort, find, transform, etc.) efficiently?
