以下问题描述的最佳设计是:
一名“学生”有4支笔,颜色为蓝色、红色、绿色和橙色。
这是 Pen 类 -
Class Pen{
String color;
//Getters & setters
public write(){
// Write some thing using color
}
}
第一种方法:
Class Studend{
//Here pens are stored in a HashMap with its Color as Key
Map<String,Pen> pens = new HashMap<String,Pen>();
Public Student(Pen p){
pens.put(p.getColor(),p);//Just an example
}
//more code here....
}
第二种方式:
Class Student{
Pen bluePen;
Pen greenPen;
Pen redPen;
Pen orangePen;
//Here all the pens are made as class variables.
//Getters and Setters...
}
注意:我需要能够迭代所有笔并执行一些常见操作,例如
for(Pen pen: pens){
pen.write();
}
第一种方式更容易。
此外,需要单独访问 Pen,例如 student.getRedPen();
,这可以通过第二种方式轻松完成。但在第一种方式中,我每次都需要这样做
if(student.getPens().containsKey("Red")){
Pen redPen = student.getPens().get("Red");
//some more code here
}
哪个更好?还有其他更好的方法来实现这一目标吗?
提前致谢!!
最佳答案
这是一个原型(prototype)。您可以添加您需要的任何其他方法:
public class Student {
private List<Pen> pens = new ArrayList<Pen>();
// Constructor + methods
}
public class Pen {
public enum Color {
RED, BLUE, GREEN, ORANGE;
}
private Color color;
public Pen(Color color) {
this.color = color;
}
// Getters & setters
public void write() {
// Write some thing using color
}
}
关于java - Java中类设计的最佳方式: An example,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23130817/