Act -oriented programming rather than facial programming is the best practice, because it improves the flexibility and scalability of the code, and follows the core principles of object -oriented programming (OOP). The following are some reasons:
1. Promote abstraction
Interface Definition Contract: - The interface specification class should What to do instead of how to do . This abstract decoupling client code (dependence on interface) and specific implementation.
For interface programming, you focus on defining behaviors rather than specific implementation.
-
2. Support the principle of upside -down inversion (solid principle)
Relying on inverted principles (DIP):
High -level modules (business logic) should not depend on low -level modules (implementation); both should rely on abstraction (interface).
- For example: service can depend on the interface, not specific implementation, such as or
. This ensures flexibility and reduces coupling. -
PaymentProcessor
PaymentGateway
StripeGateway
3. Support polymorphism PayPalGateway
Facing interface programming, multiple classes can achieve the same interface, so that they can be easily swapped to use them.
For example: and both realize the
interface. If your code depends on instead of specific implementation, you can switch between
and - without modifying the code.
-
ArrayList
LinkedList
4. Improve code flexibility and reuse List
List
ArrayList
LinkedList
Easy to replace: You can replace one implementation with another implementation (for example, switch from one database service to another database service) without changing the client code.
Repeatability:
The code written for the interface can be seamlessly work with any class.
5. Simplify testing and simulation -
Simulation for testing: - The interface allows the creation of analog implementation for unit testing.
For example: If you depend on the
interface, you can use simulation to perform testing instead of actual database.
6. Facing the future
- Add new implementation is simpler because you don't need to modify the existing code. You only need to create a new class that realizes existing interfaces.
- Example
DatabaseService
By facing interface programming, the
class can work with any
implementation (, , etc.) without modification.
Dealing code (reduced tight coupling).
<code class="language-java">// 接口
public interface Animal {
void speak();
}
// 实现 1
public class Dog implements Animal {
@Override
public void speak() {
System.out.println("Woof!");
}
}
// 实现 2
public class Cat implements Animal {
@Override
public void speak() {
System.out.println("Meow!");
}
}
// 客户端代码
public class AnimalSound {
public void makeAnimalSpeak(Animal animal) {
animal.speak();
}
}</code>
Copy after login
Makes the code easier to expand and maintain.
- Simplified testing.
Animal
AnimalSound
Encourage the principle of OOP, such as abstraction and polymorphism. Animal
Dog
Cat
Through interface programming, you can build a system that is flexible, modular and more in line with the best practice.
The above is the detailed content of java-core-: programming-to-an-interface. For more information, please follow other related articles on the PHP Chinese website!