首页
工厂方法模式(FACTORY METHOD)是一种常用的类创建型设计模式,此模式的核心精神是封装类中变化的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期维护拓展的目的。它的核心结构有四个角色,分别是抽象工厂;具体工厂;抽象产品;具体产品。 工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。 ……
将一个复杂对象的创建和它的表示分离,使得同样的创建过程可以有不同的表示。
应用场景:一水杯工厂要生产各式各样的水杯,无论杯子是神马造型,但都包括绳子,帽子和杯体。以此模型创建各种类型的杯子。
类图
cup类
public class Cup {
&nb……
抽象工厂模式 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。
意图: 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
主要解决: 主要解决接口选择的问题。
何时使用: 系统的产品有多于一个的产品族,而系统只消费其中某一族的产品。
如何解决: 在一个产品族里面,定义多个产品。
关键代码: 在一个工厂里聚合多个同类产品。
应用实例: 工作了,为了参加一些聚会,肯定有两套或多套衣服吧,比如说有商务装(成套,一系列具体产品)、时尚装(成套,……
某计算机的时钟频率为 400MHz,测试该计算机的程序使用 4 种类型的指令。每种指令的数量及所需指令时钟数(CPI)如下表所示, 则该计算机的指令平均时钟数为(A) ; 该计算机的运算速度约为 (B) MIPS。 指令类型 指令数目(条) 每条指令需时钟数 1 160000 1 2 30000 2 3 24000 4 4 16000 8
A: 1>1.85 2>1.93 3>2.36 4>3.75
B: 1>106.7 2>169.5 3……
我们经常出于某种目的需要使用各种各样的日期格式,当然我们可以使用字符串操作来构造各种日期格式,
/*用convert是明确地转换一数据类型表示到另一个,对于dateadd等等日期函数
的参数不一定是日期格式,只要可以转化即可,对于convert,字符串和日期是
2种不同的格式,这点要注意,我们来看看一个试验:*/
print dateadd(dd,1,@str)
print dateadd(dd,1,@dt)
print convert (varchar(10),@str,120)
print convert (varchar(10),@dt,120)
……
declare temp_cursor CURSOR for
select distinct [month]=convert(varchar(6),dateadd(dd,number,@begintime),112) from master..spt_values where type='p' and number <= datediff(dd,@begintime,@endtime)
open temp_cursor
declare @ym varchar(20)
fetch next from temp_cursor into @ym
while @@fetch_status=0
begin
if @sqltxt!=''
be……
什么是游标 结果集,结果集就是select查询之后返回的所有行数据的集合。 游标则是处理结果集的一种机制吧,它可以定位到结果集中的某一行,多数据进行读写,也可以移动游标定位到你所需要的行中进行操作数据。 一般复杂的存储过程,都会有游标的出现,他的用处主要有: 定位到结果集中的某一行。 对当前位置的数据进行读写。 可以对结果集中的数据单独操作,而不是整行执行相同的操作。 是面向集合的数据库管理系统和面向行的程序设计之间的桥梁。 游标的分类 根据游标检测结果集变化的能力和消耗资源的情况不同,SQL Server支持的API服务器游标分为一下4种: 静态游标: 静态游标的结果集,在游标打开的时候建立在TempDB中,不论你在操作游标的时候,如何操作数据库,游标中的数据集都不会变。 例如你在游标打开的时候,对游……
/// <summary>
/// 计算日期的间隔(静态类)
/// </summary>
public static class dateTimeDiff
{
/// <summary>
/// 计算日期间隔
/// </summary>
/// <param name="d1">要参与计算的其中一个日期字符串</param>
/// <param name="d2">要参与计算的另一个日期字符串&……
null值转化为0的方法: 在sqlserver中NULL值转换为0的方法采用ISNULL函数进行转换处理,具体的语法如下所示: ISNULL(check_expression,replacement_value) —参数说明—-
check_expression:
待检查表达式,此处表达式可以为列名,变量名 等。
replacement_value:
当check_expression为NULL时,使用replacement_value表达式替换
注意事项: check_expression和replacement_value必须具有相同的数据类型 ISNULL举例应用 ---当列名为NULL值时,使用0进行替换
s……
select DATEDIFF(day,'2009-08-01 00:00:00','2009-08-01 23:59:59') 显示0就是同一天, 第一个时间小,第二时间大,7表示7天前