2016-11-20 2 views
0

Допустим, у меня есть именованные класса, который сделан из ArrayList выражения (ов) + атрибут имени типа так:Сохранение нескольких объектов класса в другой

public class Program extends Expression { 

    private String _name; 
    /*Storage for expressions.*/ 
    List<Expression> _expressions = null; 

    /*Program constructor*/ 
    public Program(String name) { 
     _name = name; 
     _expressions = new ArrayList<Expression>(); 
     } 

Тогда я класс по имени интерпретатор, который должен преобразовывать входные данные в объекты класса Program, а также должен хранить эти объекты, связывая их с ними.

public class Interpreter implements Serializable { 
    Program _program; 

    public Interpreter(){ 
    } 

    public void createProgram(String program_name){ 
    Program program = new Program(program_name); 
    _program = program; 
    } 

Мой вопрос, если это плохая практика, или даже жизнеспособным для хранения предметов, как я сделал выше, если класс Программа уже имеет имя атрибута мне нужно, и просто ссылаться на объект по его имени, когда мне это нужно или если я должен создать список массивов типа программы в классе интерпретатора для их хранения.

У меня возникли проблемы, обволакивая некоторые из концепций ООП, и мне было интересно, если я просто буду создавать объекты типа программы через интерпретатор и не буду ссылаться на них нигде позже, они будут в конечном счете, исчезают правильно?

Я также могу, например, получить программу от интерпретатора с помощью метода, подобного этому, например.

public Program readProgram(String filename){ 
     return getProgram(filename); 
} 

ответ

0

Это зависит от дизайна приложения. Например. чтобы проверить, может ли выражение быть частью программы, вам необходимо учитывать следующее:

  • Может ли выражение существовать независимо?
  • Может ли выражение быть связано с несколькими программами?

Если ответ на любой из приведенных выше вопросов да, то мы должны иметь независимую сущность выражения, и мы можем хранить сопоставления между выражением и программой.

Теперь, вопрос о хранении атрибута «имя» в Program, я рекомендовал бы взглянуть на this SO ответить и this статьи, которая в основном объяснить разницу между составом (т.е. тот, который вы пробовали) и наследование (другой подход).

Если все объекты имеют одинаковые свойства (например, имя, дата создания и т. Д.), Тогда рекомендуется создать класс Abstract и сделать эти классы расширенными.

Смежные вопросы