构造型模式

博客介绍了构造型模式,包括工厂方法、抽象工厂等模式。还详细讲解了构造器,如定义、与一般函数的区别,Java构造类实例的顺序,何时定义构造函数及注意事项,如避免在构造器创建自身实例等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

构造型模式涉及对象的实例化,这类模式的特点是,不让用户代码依赖于对象的创建或排列方式,避免用户直接使用new运算符创建对象。

构造型模式主要包括:

  1. 工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪个类。Factory Method使一个类的实例化延迟到其子类。
  2. 抽象工厂模式:提供一个创建一系列或互相依赖对象的接口,而无需指定它们具体的类。
  3. 生成器模式:将一个复杂对象的构建与它的表示分离,使同样的构建过程可以创建不同的表示。
  4. 原型模式:用原型实例指定创建对象的种类,并且通过复制这些原创创建新的对象
  5. 单件模式(单例模式):保证一个类仅有一个实例,并提供一个全局访问点。

构造器

定义

构造对象并初始化。创建对象时调用的函数,创建对象时都必须对构造函数初始化。

  1. 一个类中可有多个构造器。
  2. 构造器的名字和类名相同。
  3. 构造器可有0个、1个、多个参数。
  4. 构造器不是函数。
构造器和一般函数的区别
构造器函数
为了创建类的实例执行java代码
对象创建时调用进行对象的初始化需要函数功能时才调用
只会调用一次可以调用多次
名称大写,和类名相同名称小写
不用定义返回值类型,无返回值需要定义返回类型
不能从父类中继承可以继承
修饰符只有public.protected.private三个抽象、同步、静态都可以
使用构造器必须new,Person person = new Person()通过函数名调用
Java在构造类实例时的顺序(1和2是类的装载过程)
  1. 静态变量赋值,不赋值就不执行。
  2. 静态代码块,只执行一次。
  3. 分配对象空间,将对象中的成员初始化(0、false、null)java不允许用户操作一个不确定的值。
  4. 属性值的显示初始化(成员变量直接赋值)。
  5. 执行构造器。
  6. 对象方法(变量关联到堆中的对象上)

一个类中如果没有定义构造函数,那么类中就会有一个默认的空参构造函数;如果定义了指定的构造函数,那类中的构造函数就不执行了。

什么时候定义构造函数

在描述事物的时候,该事物已经具备一定的功能,这些内容都定义在构造函数中。

Person() {
    name = “baby”; 
    age=1; 
}
Person(String n) {
    name = n;
}
Person(String n, int a) {
    name = n;
    age = a;
}
  1. 一个类中出现了多个构造函数,他们必须以重载形式体现,可以对不同的对象进行不同的初始化。
  2. this可以在构造函数中调用本类的其他构造函数,super调用父类的构造函数,默认父类的默认构造函数,也可以指定。this、super的调用都必须放在构造函数的第一行,因为要首先执行初始化动作,否则编译失败。
  3. 当父类的默认构造函数被覆盖掉时,super()调用会报编译器错误。
注意事项
  1. 构造器中不要创建自身实例,会造成栈溢出错误。
  2. 如果父类是一个抽象类,通过调用父类的构造器,也可以将它初始化,并且初始化其中的数据。
  3. 在构造器中调用一个方法时,把它声明为private的。如果这个方法被子类重写,可能会出现在父类构造器对方法的调用因为多态而调用子类的方法,这时子类会因为变量没有初始化而出现异常。原则是始终保证父类调用自己的方法。

上一篇: 享元模式
下一篇: 生成器模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值