2017-09-04 62 views
2

我怎样才能使我的程序限制以下实例创建四个这样,当我尝试创建第五中学是显示错误消息的实例的数量,“学校无法注册达到最大值“。 感谢一如既往限制创建使用带有参数的构造函数

public class Driver { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     Header h1 = new Header(); 
     h1.schoolHeader(); 
     School s1 = new School("Pascoe Vale High School", "101"); 
     School s2 = new School("North Melbourne Primary School", "102"); 
     School s3 = new School("St Aloysuis College", "103"); 
     School s4 = new School("Coburg High School", "104"); 
     School s5 = new School("Chuka Nwobi High School", "105"); 
    } 
} 

class School { 
    public static int objCount = 0; 
    private static String regId; 
    private String name; 

    School(String name, String regId) { 
     this.name = name; 
     this.regId = regId; 
     System.out.println("*** Successfully registered " + getName()); 
     objCount++; 
    } 

    public void registerHeader() { 
     System.out.println("--- Registering Participating Schools---"); 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getRegId() { 
     return regId; 
    } 
    public void setRegId(String regId) { 
     this.regId = regId; 
    } 
} 
+0

介绍工厂模式。 – Flown

+1

使用数组和全球个性化......或者在学校静态counteer –

+0

那么你已经在你的构造函数中的静态学校计数器,抛出一个异常,如果正在创建一个又一个? – daniu

回答

2

的示例代码,你问:

static final int ALLOWED_COUNT = 4; 

public School(String name, String regId) { 
    if (objCount >= ALLOWED_COUNT) { 
     throw new TooManySchoolsException("Only " + ALLOWED_COUNT + " schools allowed!"); 
    } 
    this.name = name; 
    this.regId = regId; 
    System.out.println("*** Successfully registered " + getName()); 
    objCount++; 
} 

老实说,虽然,这不是一个好主意,做这种方式。更好地允许创建无数的学校对象,并有一个单独的SchoolRegistry类,用于跟踪有多少学校注册。

class SchoolRegistry { 
    static final int MAX_SCHOOLS = 4; 
    private List<School> schools = new ArrayList<>(); 
    public void register(School s) { 
     if (schools.size() > MAX_SCHOOLS) throw new TooManySchoolsException(); 
     schools.add(s); 
    } 
} 
+0

两个好点:讲的错误是什么学校的最大数量是(所以程序员收到一些帮助)和移动决定一个SchoolRegistry。后者也可以有一个createSchool方法被称为工厂类。 –

+0

关于创建SchoolRegistry的好处! – nagendra547

相关问题