0
我有一个类为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