Home > Article > Backend Development > How Can Refactoring Eliminate Friend Dependencies in Shared Resource Management?
Friend 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:
Disadvantages:
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!