У меня есть класс для ShopOrderRepository
и код следующий,Как создать класс Singleton из другого класса?
public class ShopOrderRepository {
private IModelFactory modelFactory;
public ShopOrderRepository(IModelFactory modelFactory)
{
this.modelFactory = modelFactory;
}
public ShopOrder loadShopOrder(String shopOrderId)
{
ShopOrder order = modelFactory.getShopOrder();
order.setId(shopOrderId);
List<OrderLine> orderLines = new ArrayList<OrderLine>();
orderLines.add(getOrderLine("1","Keyboard",1));
order.setOrderLines(orderLines);
return order;
}
private OrderLine getOrderLine(String productId, String name, int quantity)
{
OrderLine orderLine = modelFactory.getOrderLine();
Product product = modelFactory.getProduct();
product.setId(productId);
product.setName(name);
orderLine.setProduct(product);
orderLine.setQuantity(quantity);
return orderLine;
}
public void saveShopOrder(ShopOrder shopOrder)
{
System.out.println("Hurray, you saved the shopOrder: "+shopOrder);
}
}
Теперь у меня есть еще один класс, а именно BackendContainer
реализует интерфейс и приводится ниже,
public class BackendContainer implements IModelFactory {
public BackendController getBackendController()
{
return new BackendController(getShopOrderRepository());
}
// TODO: should be a singleton
public ShopOrderRepository getShopOrderRepository()
{
return new ShopOrderRepository(this);
}
}
Теперь есть комментарий топ метода getShopOrderRepository
и его указания сделать класс ShopOrderRepository
в качестве Singleton. Итак, я пишу, как следующее,
public class BackendContainer implements IModelFactory {
private ShopOrderRepository shopOrderRepository;
public BackendController getBackendController()
{
return new BackendController(getShopOrderRepository());
}
// TODO: should be a singleton
public static ShopOrderRepository getShopOrderRepository()
{
// return new ShopOrderRepository(this);
return shopOrderRepository != null ? shopOrderRepository: (shopOrderRepository = new ShopOrderRepository(this));
}
}
И вопрос? Как я могу вам помочь? –
Я попросил, чтобы комментарий был предназначен для использования синглтона класса ShopOrderRepository. То, как я это сделал, это правильно? – Arefe