1.为避免多次输入同样的东西, 可新建一个类(结构体)来替代存储
2.const的值是在编译期间确定的,因此只能在声明时通过常量表达式指定其值。而static readonly是在运行时计算出其值的,所以还可以通过静态构造函数来赋值。
3.依赖关系:
public static Light Create(string LightType)
{
if(LightType == "Bulb")
return new BulbLight();
else if(LightType == "Tube")
return new TubeLight();
else
return null;
}
如果没有依赖关系,如何才能创建这些对象呢?也就是说LightSimpleFactory必须知道BulbLight、TubeLight这两各类才行,因此有依赖关系。
4.抽象工厂里,把相对固定的类别作为产品结构(横轴),扩展性强的作为产品族(纵轴),最大限度满足 开放-闭包原则
例子里面的: 大陆 和 动物
目标产品(类)是二维的时候,适用抽象工厂,且以相对固定的那个分类,作为横轴。纵轴分类作为工厂,添加新的纵轴分类只需要新建工厂,而不需要修改工厂。
客户端操作的,工厂类和产品类,应该都是抽象类。
5.抽象基类里的抽象方法,没写访问修饰符,子类不能重载(不可见),默认private??
6.singleton模式的延迟载入,莫非用的就是static属性? 外部类的static返回方法 只是应付程序启动时的要求(编译,程序运行,参考 2),真正的实例值,要在调用时才通过内部类的static字段给出。
内部类构造函数的static声明 ,还是没懂。。。。
7.抽象工厂模式 里 具体工厂直接返回实例,而建造模式里,具体建造者(具体工厂)侧重的是 目标产品的组合创建过程,有些产品的合并处理放到了具体创建者里。 抽象工厂与建造者很象,
区别在于:
建造者模式的抽象类是描述生成产品所需要的方法,而抽象工厂里的抽象类是直接返回产品类。
建造者模式多了一个决策者,该决策者执行抽象类里面描述的生产产品方法。抽象工厂无。
建造者的产品有自我组装的方法。抽象工厂无。
建造者产品生产方法的分类,类似于抽象工厂里产品结构分类(横轴)。建造者的这个分类,由产品类汇总到了产品自身(该分类就是产品生产方法),而抽象工厂的这个分类,伴随产品的抽象,分类到不同的产品里去了。
具体建造者与具体工厂一样,可以扩展(纵轴)。
8.原型模式有点类似简单工厂模式,但只有产品从基类继承出多个子类这部分。工厂模式中工厂返回的是产品实例,而原型返回的只是一个拷贝。但带prototype Manger的原型里,prototype Manger觉得就象工厂(^^生搬硬套)。
”原型实际上是动态抽取当前对象运行时的状态“
9.适配器模式......对象适配器模式时,把Adaptee源类作为Adapter的一个属性,在构造函数里将其初始化,为什么?在接口方法里直接构造Adaptee实例,调用其方法不行么?违反了什么原则??
10.合成模式: 说实话,不是很明白,要合成什么,这个模式的话,必须要构造成树形结构的吗?
透明方式: 在Component里面声明所有的用来管理子类对象的方法。这样做的好处是所有的构件类都有相同的接口。
安全方式: 在Composite类里面声明所有的用来管理子类对象的方法。这个选择的缺点是不够透明,因为树叶类和合成类将具有不同的接口。
2.const的值是在编译期间确定的,因此只能在声明时通过常量表达式指定其值。而static readonly是在运行时计算出其值的,所以还可以通过静态构造函数来赋值。
3.依赖关系:
public static Light Create(string LightType)
{
if(LightType == "Bulb")
return new BulbLight();
else if(LightType == "Tube")
return new TubeLight();
else
return null;
}
如果没有依赖关系,如何才能创建这些对象呢?也就是说LightSimpleFactory必须知道BulbLight、TubeLight这两各类才行,因此有依赖关系。
4.抽象工厂里,把相对固定的类别作为产品结构(横轴),扩展性强的作为产品族(纵轴),最大限度满足 开放-闭包原则
例子里面的: 大陆 和 动物
目标产品(类)是二维的时候,适用抽象工厂,且以相对固定的那个分类,作为横轴。纵轴分类作为工厂,添加新的纵轴分类只需要新建工厂,而不需要修改工厂。
客户端操作的,工厂类和产品类,应该都是抽象类。
5.抽象基类里的抽象方法,没写访问修饰符,子类不能重载(不可见),默认private??
6.singleton模式的延迟载入,莫非用的就是static属性? 外部类的static返回方法 只是应付程序启动时的要求(编译,程序运行,参考 2),真正的实例值,要在调用时才通过内部类的static字段给出。
内部类构造函数的static声明 ,还是没懂。。。。
7.抽象工厂模式 里 具体工厂直接返回实例,而建造模式里,具体建造者(具体工厂)侧重的是 目标产品的组合创建过程,有些产品的合并处理放到了具体创建者里。 抽象工厂与建造者很象,
区别在于:
建造者模式的抽象类是描述生成产品所需要的方法,而抽象工厂里的抽象类是直接返回产品类。
建造者模式多了一个决策者,该决策者执行抽象类里面描述的生产产品方法。抽象工厂无。
建造者的产品有自我组装的方法。抽象工厂无。
建造者产品生产方法的分类,类似于抽象工厂里产品结构分类(横轴)。建造者的这个分类,由产品类汇总到了产品自身(该分类就是产品生产方法),而抽象工厂的这个分类,伴随产品的抽象,分类到不同的产品里去了。
具体建造者与具体工厂一样,可以扩展(纵轴)。
8.原型模式有点类似简单工厂模式,但只有产品从基类继承出多个子类这部分。工厂模式中工厂返回的是产品实例,而原型返回的只是一个拷贝。但带prototype Manger的原型里,prototype Manger觉得就象工厂(^^生搬硬套)。
”原型实际上是动态抽取当前对象运行时的状态“
9.适配器模式......对象适配器模式时,把Adaptee源类作为Adapter的一个属性,在构造函数里将其初始化,为什么?在接口方法里直接构造Adaptee实例,调用其方法不行么?违反了什么原则??
10.合成模式: 说实话,不是很明白,要合成什么,这个模式的话,必须要构造成树形结构的吗?
透明方式: 在Component里面声明所有的用来管理子类对象的方法。这样做的好处是所有的构件类都有相同的接口。
安全方式: 在Composite类里面声明所有的用来管理子类对象的方法。这个选择的缺点是不够透明,因为树叶类和合成类将具有不同的接口。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12913851/viewspace-617065/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/12913851/viewspace-617065/