您的位置 首页 java

java面向对象系列——封装的概念

Java 或面向对象编程语言中的封装 是一个概念,它强制保护变量、函数不受类外部的影响,以便更好地管理那段代码,并且由于更改对程序其他部分的影响最小或没有影响受保护的代码。

Java 中的封装在 不同的地方都是可见的 ,Java 语言本身提供了许多结构来封装成员。您可以使用private关键字将成员完全封装为 Java 中的变量或方法,甚至可以通过使用其他访问修饰符(如protected或public )在 Java 中实现较小程度的封装。
封装的真正价值 是在一个容易发生很大变化的环境中实现的,我们知道软件需求每天都在变化,如果你的代码封装得很好,你可以更好地管理需求变化带来的风险。与Java 中的抽象和 Java 中的多态一起,封装是一个必须知道的概念。 在本 Java 教程中,我们将了解 如何在 Java 中使用封装,封装 的优缺点,以及利用封装面向对象概念的各种设计模式和现实问题。 如果您正在寻找有关 Java 中 OOPS 和 SOLID 设计原则的快速指南,那么您可能会发现

Java中的封装是什么

封装只不过是保护任何容易改变的东西 。封装背后的基本原理是,如果任何功能都被很好地封装在代码中,即只在一个地方维护而不分散在代码中,那么很容易更改。

这可以通过一个 简单的 Java 封装示例 来更好地解释。我们都知道 构造函数 用于在 Java 中创建对象,构造函数可以接受参数。 假设我们有一个Loan类 ,它有一个构造函数,然后在各种类中,您使用这个构造函数创建了一个贷款实例。现在要求发生了变化,您在贷款时还需要包括借款人的年龄。
由于此代码没有很好地封装,即没有限制在一个地方,因此您需要在调用此构造函数的任何地方进行更改,即对于一次更改,您需要修改多个文件而不是只修改一个更容易出错和乏味的文件,尽管它可以使用高级 IDE 的重构功能完成,如果您只需要在一个地方进行更改,那不是更好吗? 是的,如果我们将 Loan 创建逻辑封装在一个方法中,例如createLoan()和调用此方法的客户端代码,并且此方法在内部创建Loan对象,这是可能的。在这种情况下,您只需要修改此方法而不是所有客户端代码。

Java中的封装示例

 class Loan{
    private int duration;  //private variables examples of  encapsulation 
    private String loan;
    private String borrower;
    private String salary;
   
    //public constructor can break encapsulation instead use factory method
    private Loan(int duration, String loan,  String  borrower, String salary){
        this.duration = duration;
        this.loan = loan;
        this.borrower = borrower;
        this.salary = salary;
    }
   
    //no argument constructor omitted here
    
   // create loan can encapsulate loan creation logic
    public Loan createLoan(String loanType){
  
     //processing based on loan type and then returning loan object
      return loan;
    }

}  

在Java 封装的 同一个示例中,您会看到 所有成员变量都是私有的 ,因此它们被很好地封装,您只能在此类中直接更改或访问此变量。 如果您想允许外部世界访问这些变量,最好创建一个像getLoan()这样的 getter 和 setter ,它允许您在归还贷款之前进行任何类型的验证、安全检查,这样您就可以完全控制您的任何事情想要做的事情,并为受控和管理的客户端提供单一访问渠道。

Java和 OOP 封装的优势

以下是在使用Java 或任何面向对象的编程语言编写代码时使用 封装 的几个优点:

1. 封装代码更灵活,更容易随着新的需求而改变。

2. Java 中的封装使单元测试变得容易。

3. Java中的封装允许你控制谁可以访问什么。

4. 封装还有助于在Java中编写不可变类,这是多线程中的一个不错的选择环境。

5. 封装减少了模块的 耦合 ,增加了模块内部的凝聚力,因为所有部分都是一个东西

被封装在一个地方。

6. 封装允许你改变一部分代码而不影响其他部分代码。

你应该在代码中封装什么?

任何可以改变并且在不久的将来更有可能改变的东西都是封装的候选者。这也有助于编写更具体和有凝聚力的代码。这方面的一个例子是对象创建代码,将来可以改进的代码,如排序和搜索逻辑。

Java中基于封装的设计模式

Java中的许多设计模式都使用封装概念,其中之一是用于创建对象的工厂模式。对于创建那些创建逻辑可能不同的类的对象以及创建同一接口的不同实现,工厂模式是比 new 运算符更好的选择。 JDK 的 BorderFactory类是 Java 封装的一个很好的例子,它创建了不同类型的 Border 并封装了Border的创建逻辑。Java 中的单例模式还通过提供 getInstance ()方法 封装了如何创建实例 。由于一个对象在一个类中创建,而不是从代码中的任何其他位置创建,您可以轻松更改创建对象的方式,而无需影响代码的另一部分。

关于 Java 封装的要点。

1. “凡是变化就封装它”是著名的设计原则。

2. 封装有助于松散耦合和代码的高内聚。

3. Java 中的封装是使用访问修饰符private 、 protected 和public实现的。

4.工厂模式,Java中的Singleton模式很好的利用了封装。

文章来源:智云一二三科技

文章标题:java面向对象系列——封装的概念

文章地址:https://www.zhihuclub.com/176537.shtml

关于作者: 智云科技

热门文章

网站地图