数据库中的变化
1-从iC_ProductFeature表中删除了柱子尺寸
2 - 添加新表iC_ProductDimensions以保存产品的不同尺寸数据。以下是iC_ProductDimensions
中使用的不同列的详细说明1- DimensionId - This is the primary key in the table and of bigint datatype.
2- UOMID - (FK) Unit of Measurement ID , this is refrenced from the table iC_ProductUnitOfMeasure.
3- ProductFeatureId : This is referenced column from the iC_ProductFeature table.
4- NumericValue : This column stores the dimensional value (e.g. if UOM is pound and this column stores 10 than we can say that Weight of product is 10 pound.
3-在iC_ProductUnitOfMeasure中添加了一列'MeasurementType'。
4-将ProductFeatureId的数据类型从varchar(100)
更改为Bigint数据流
iC_ProductUnitOfMeasure中的e.g. let's take a snapshot view of rows in iC_ProductUnitOfMeasure
UOMID Abbrivation MeasurementType Description
1 lb Weight This UOM is used for measuring weight of the product
2 inch. Width This UOM is used for measuring width of the product
3 meter Length This UOM is used for measuring length of the product
4 Kg Weight This UOM is used for measuring weight of product in Kg.
在上面的例子中,我们用关联的MeasurementType标记了每个UOM。
UOM 1可用于测量磅重的产品重量同样UOM 4可用于测量千克重量的产品重量。
添加产品长度为0.5米,产品宽度为50英寸,产品重量为100磅的产品。
1 - 在iC_Product表中创建记录以存储产品的常用属性。 (Suppopse ProductId = ICPR0001)
2-在iC_ProductFeature中创建记录并存储常用产品功能,如颜色,大小,s / w,h / w功能(如果有)。 (假设ProductFeatureId = 1)
3-在iC_ProductDimesion表中创建3条记录,如下所示。
DimensionID UOMID ProductFeatureId NumericValue
1 1 1 100
2 2 1 50
3 3 1 0.5
4-使用(ProductId = ICPR0001和ProductFeatureId = 1)在iC_ProductFeatureApplicability中添加记录
查询数据以获取产品ICPR001的不同尺寸值
select
product .* ,
productFeature.* ,
( CAST (dimension.NumericValue as Varchar(100) )+" " + UOM.Abbrivation) as Dimension ,
dimension.MeasurementType
from
iC_Product product ,
iC_ProductFeature productFeature ,
iC_ProductFeatureApplicability ,
iC_ProductDimesions dimension ,
iC_ProductUnitOfMeasure UOM
where
iC_ProductFeatureApplicability.ProductId = product.ProductId
and
iC_ProductFeatureApplicability.ProductFeatureId = productFeature.ProductFeatureId
and
dimension.ProductFeatureId = productFeature.ProductFeatureId
and
dimension.UOMID= UOM.UOMID
and
product.ProductId = 'ICPR001'
答案 0 :(得分:2)
一个真正的单例只能被实例化一次(每个线程,在某些实现中)。
Unity生命周期管理只是让Unity始终返回相同实例的一个选项;该实例不太可能实际设计为单例,因此原则上您仍可以手动创建其他实例。
有关区别的更多信息,请参阅我对this question的回答。
答案 1 :(得分:0)
单例模式就是模式本身 - Unity只是在几个地方实现该模式(包括大多数终身经理)。
根据定义,单身人士无法模仿 - 他们被设计为只有一个实例。如果使用单例的代码通过接口进行,那么可以模拟一个类型来实现该接口,但是你不能模拟单例本身。
至于单身模式是否是反模式,我不相信它。我认为它经常被过度使用并且往往被实施以取代更好的解决方案。不过,我认为这不是对抗模式本身的标志。