Я пытаюсь создать Фабрику со следующей функцией:
она всегда должна возвращать объект Filter.
Любой изhashmap =, если строковые буквы (ключ) уже существуют в hashmap, он должен просто взять свое значение (объект) из hashmap и вернуть его.
или новый, если в хэш-карте нет этого ключа, затем создайте новый объект и верните его.
Программа должна работать в следующем порядке в соответствии с пользовательским вводом:
//user first input.
String letters="aaa"; // creat new object.
//user second input.
String letters="fff"; // creat new object.
String letters="aaa"; //dont make a new object and return the object and return the object of the first input.
Для этого я подумал о следующем:
- Сначала я подумал о том, чтобы использовать хеш-карты.
- , назначив
String letters
в качестве ключа и объект Filter
в качестве значения. - затем я бы сохранил ключив строке массива и назначьте определенную позицию этого массива в качестве ключа на карте, а затем сравните, если ключ не был введен ранее, затем создайте новый объект, если ключ уже существует, и верните его объект.
Но я не могу создать массив строк, если не знаю его длины.
Вот что я написал на данный момент: (Я удалил массив.)
(FactoryClass)
//if i let this i will getjava.lang.NullPointerException
//private static Filter filter = null;
public static Filter getFilter(String letters){
Filter filter=new Filter(letters);
HashMap <String, Object> hmap = new HashMap< String , Object> ();
hmap.put(letters,filter);
//for the first run is true because the map has yet only one pair of <k,v>
if (hmap.containsKey(letters))
{
System.out.println("return the obj where there is a key match");//i will remove this later cz the user doesnt care about it.
//so i will return the filter object that has been created here "hmap.put(letters,filter);" by returning the value that matches the key.
return (Filter) hmap.get(letters);
} else {//if the user didn't enter the same key then a new object shall be created!.
System.out.println("new object has been generated");//i will remove this late cz the user doent care about it.
//if the entered letters(key) isnt found in the map then put it in the map and creat new object.
hmap.put(letters, filter);
return filter;
}
}
Конструктор в другом классе защищен, и фабрика будет получать строковые буквы для каждого пользовательского ввода из метода main.Любая помощь будет принята, но, пожалуйста, продемонстрируйте свои предложения в коде Java.