面向对象设计原则:在Java中实践这些原则

原创 偏执的太偏执、 2024-10-12 07:36 210阅读 0赞

面向对象设计(Object-Oriented Design,简称OOD)是软件工程中的一个重要环节。Java语言作为一门支持面向对象的编程语言,自然会遵循一些面向对象的设计原则。以下是Java中实现这些原则的一些实例:

  1. 单一职责原则(Single Responsibility Principle, SRP)

    • 实例:Person类只包含个人信息和基本行为,不涉及具体业务逻辑。

      1. class Person {
      2. String name;
      3. int age;
      4. // 基本行为方法
      5. void eat() {
      6. System.out.println("Eating...");
      7. }
      8. // 仅用于展示SRP原则
      9. void handleBusiness(int business) {
      10. if (business > 0) {
      11. System.out.println("Handling business: " + business);
      12. eat(); // 业务处理后吃饭
      13. } else {
      14. System.out.println("Invalid business: " + business);
      15. }
      16. }
      17. }
  2. 开闭原则(Open-Closed Principle, OCP)

    • 实例:BankAccount类不依赖于具体存款方式,如银行卡、电子钱包等。

      1. class BankAccount {
      2. double balance;
      3. // 开放的方法 - 用于与外界交互
      4. void deposit(double amount) {
      5. balance += amount;
      6. System.out.println("Deposit successful. Balance: " + balance);
      7. }
      8. void withdraw(double amount) {
      9. if (amount > balance) {
      10. System.out.println("Withdrawal failed. Insufficient balance.");
      11. return;
      12. }
      13. balance -= amount;
      14. System.out.println("Withdrawal successful. Balance: " + balance);
      15. }
      16. // 仅用于展示开闭原则
      17. void handleTransaction(int transactionType, double amount)) {
      18. switch (transactionType) {
      19. case DEPOSIT:
      20. deposit(amount);
      21. break;
      22. case WITHDRAWAL:
      23. withdraw(amount);
      24. break;
      25. default:
      26. System.out.println("Invalid transaction type.");
      27. break;
      28. }
      29. }
      30. }
  3. 依赖倒置原则(Dependency Inversion Principle, DIP)

    • 实例:Logger接口不依赖于具体的日志实现,如ConsoleLoggerFileLogger等。
      ```java
      // Logger 接口
      interface Logger {
      void log(String message);
      }

    // ConsoleLogger 类实现 Logger 接口
    class ConsoleLogger implements Logger {

    1. @Override
    2. public void log(String message) {
    3. System.out.println(message);
    4. }

    }

    // 代码使用示例 - 不依赖于具体日志实现
    class Application {

    1. private Logger logger;
    2. public Application(Logger logger) {
    3. this.logger = logger;
    4. }
    5. public void executeTask(String taskDescription) {
    6. logger.log("Executing task: " + taskDescription);
    7. // 执行任务逻辑...
    8. }

    }
    ```

通过以上实例,可以看到在Java中实践面向对象设计原则的方法。

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,210人围观)

还没有评论,来说两句吧...

相关阅读