Java程序设计基础 面向对象 练习 静态工厂方法

  定义静态域nextId和一个静态方法getNextId,将三个Employee对象写入数组,然后打印雇员信息。最后打印出写一个可用的员工标识码来展示静态方法。

package company;

public class Gettext {

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        Employee[] staff = new Employee[3];
        staff[0] = new Employee("Tom",40000);
        staff[1] = new Employee("Dick",60000);
        staff[2] = new Employee("Harry",65000);
        for(Employee e:staff)
        {
            e.setId();
            System.out.println("name= " + e.getName() + " id= " + e.getId() + " salary=" + e.getSalary());
        }
        int n = Employee.getNextId();
        System.out.println("Next available id = " + n);
    }
}
package company;

public class Employee {
    private static int nextId = 1;
    private String name;
    private double salary;
    private int id;
    public Employee(String name,double salary)
    {
        this.name = name;
        this.salary = salary;
        id = 0;
    }
    public String getName()
    {
        return name;
    }
    public double getSalary()
    {
        return salary;
    }
    public int getId()
    {
        return id;
    }
    public void setId()
    {
        id = nextId;
        nextId++;
    }
    public static int getNextId()
    {
        return nextId;
    }
    public static void main(String[] args) {   //用于独立测试Employee类
        // TODO 自动生成的方法存根
        Employee e = new Employee("Herry",50000);
        System.out.println(e.getName() + "  " + e.getSalary());
    }

}

  程序运行结果:

  name= Tom id= 1 salary=40000.0
  name= Dick id= 2 salary=60000.0
  name= Harry id= 3 salary=65000.0
  Next available id = 4

时间: 2024-08-02 23:02:54

Java程序设计基础 面向对象 练习 静态工厂方法的相关文章

改善JAVA代码01:考虑静态工厂方法代替构造器

前言 系列文章:[传送门]   每次开始新的一本书,我都会很开心.新书新心情. 正文 静态工厂方法代替构造器 说起这个,好多可以念叨的.做了一年多的项目,慢慢也有感触. 说起构造器 大家很明白,构造器可以让我们在何处何地获取自身或者他人一个实例.我们是无忌惮的使用着 new 却从来没考虑过人家的感受.其实new ,new一个对象,就是开辟一块内存空间给这个对象.如果何处何地,都new的话,漫山遍野... 五颜六色的new ,本质却一样 一句话:构造器虽是万能,但是要珍惜. 再谈谈 静态工厂方法

【读书笔记 - Effective Java】01. 考虑用静态工厂方法代替构造器

获取类的实例有两种方法: 1. 提供一个公有的构造器(最常用). 2. 提供一个公有的静态工厂方法(static factory method). // 静态工厂方法示例 public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; } 静态工厂方法的优势: 1. 有名称.当一个类需要多个带有相同签名(方法签名 = 方法名 + 参数列表)的构造器时,就用静态工厂方法代替构造器,并且慎重选择名

Java程序设计基础 面向对象 练习

最近JAVA开了面向对象的课程,老师布置了作业,嗯,就是这样,啥作业我不怎么会描述,代码如下,自己做的,代码很不成熟,请谅解!大概就是这样: class Student { private String stuno; private String name; private float math; private float english; private float computer; /*Student() { }*/ public void StuPer(String stuno,Str

经验法则:考虑用静态工厂方法代替公有构造方法

经验法则:考虑用静态工厂方法代替公有构造方法 一.引出静态工厂方法 对于java类而言,为了让使用者获取它自身的一个实例化对象,会有以下方法: 1.该类提供一个公有的构造方法.在这种情况下,程序可以通过多个“new 构造方法”语句来创建类的任意多个实例.但是每执行一条new语句,都会导致java虚拟机的堆区中产生一个新的对象. 2.该类提供一个公有的静态工厂方法(它只是一个简单的静态方法,返回的是类的一个实例,要区别于设计模式中的工厂方法模式).对于某些java平台库类或自己的工具类.参数化类,

<创建和销毁对象>经验法则——考虑用静态工厂方法代替公有构造方法

一.引出静态工厂方法 对于java类而言,为了让使用者获取它自身的一个实例化对象,会有以下方法: 1.该类提供一个公有的构造方法.在这种情况下,程序可以通过多个“new 构造方法”语句来创建类的任意多个实例.但是每执行一条new语句,都会导致java虚拟机的堆区中产生一个新的对象. 2.该类提供一个公有的静态工厂方法(它只是一个简单的静态方法,返回的是类的一个实例,要区别于设计模式中的工厂方法模式).对于某些java平台库类或自己的工具类.参数化类,需要进一步封装创建自身实例的细节,并且控制自身

[Effective Java]考虑用静态工厂方法代替构造器

本文主要介绍如何使用静态工厂方法已经在那种场合来使用这种方式代替构造方法. 众所周知,对于类而言,我们为了获得一个类的实例对象,通常情况下会提供一个公有的(public) 的构造器.当然除了这种方法以外,我们还可以通过给类提供一个public的静态工厂方法(static factory method)的方式来完成,让它返回一个类的实例. 先看一个简单的Boolean的示例,这个示例将boolean基本类型值转换成一个Boolean对象的引用. public static Boolean valu

Effective java读书札记第一条之 考虑用静态工厂方法代替构造器

对于类而言,为了让客户端获取它资深的一个实例,最常用的方法就是提供一个共有的构造器.还有一种放你发,也应该子每个程序员的工具箱中占有一席之地.类可以提供一个共有的静态 工厂方法,它只是返回类的实例的静态方法. 类可以通过静态工厂方法类提供它的客户端(对象),而不是通过构造器.提这样做的好处有: 1.静态工厂方法与构造器不同的第一大优势在于,它们有名称.比如构造器BigInteger(int,int,Random)返回的BigInteger可能为素数,如果用名为BigInteger.probabl

Effective Java 读书笔记(一):使用静态工厂方法代替构造器

这是Effective Java第2章提出的第一条建议: 考虑用静态工厂方法代替构造器 此处的静态工厂方法并不是设计模式,主要指static修饰的静态方法,关于static的说明可以参考之前的博文<java中final与static的使用场景总结>. 什么是静态工厂方法? 可以参考书中的例子(摘自JDK1.7 java.lang.Boolean) public final class Boolean implements java.io.Serializable, Comparable<

EFFECTIVE JAVA 第一天 静态工厂方法

静态工厂方法:(这里指的是就是普通static方法),类可以通过静态工厂方法提供给它的客户端,而不是通过构造器.提供静态工厂方法而不是公有构造器,这样做有几大优势. 在类的实现中使用了API的类被称为该API的客户(client) 使用API编写程序的程序员称为该API的用户(user) 术语:基本类型:primitive,引用类型:reference type 方法的签名:由名称和所有参数类型组成,不包括返回类型 优点: 1. 有名称(当一个类有多个相同签名的构造器,用静态工厂代替更容易理解)