Filter体现了一个模式“责任链模式”,Servlet体现了一个模式“模板方法”
还有java中的int 存了一些常用的128个值 ,这也是一个享元模式的应用。
83. 就像你买电视一样,你现在面对的不是电视,你面对的是一个集团,你对集团说我要一台电视。
84. 我要一台电视,你把一台电视给我就行了,我不会去管怎么生产的。
85. 其实工厂的作用就是创建产品,把产品的创建过程给隐藏了,如果没有工厂你自己要面对产品,这个类new的过程就是创建,你自己new你肯定要知道你才能new,你要知道的话,你对他就有依赖了,有了工厂你就不知道他怎么new的了。
86. 工厂是稳定的,就像你如果要做产品,你不可能依赖人,公司也不可能依赖一个人,人是不稳定的,我做产品,肯定找公司,找人的话,说不给我做了,就不给我做了。
87. 我们来面对工厂,工厂模式其实就是隐藏产品创建细节,比如说型号一的电视机淘汰了,要升级了,你到工厂里面去改,我拿到的我不管了,你升级就升级吧。
88. 工厂只有两种,工厂方法和抽象工厂,其他的都是不标准的,变种,跟病毒一样。
89. 通俗地说一下,模式其实就是加入了一个间接层
加入间接层,我对他就没有依赖了。
90. 我要什么型号的电视,扔到工厂里面去,你给我创建了,
91. 开闭原则,对扩展是开放的,对修改是关闭的,这是一种最最理想的状态。
92. 缺点:只能创建单一产品系列,其实这也并不是说是什么缺点,只是他的一个适应场景。就好像我们以前说的model1 model2我们不能就说model1就差,电视就是一个系列,如果你现在加入一个笔记本电脑,他就创建不了了。
93. is-a 我完全实现了你,并没有任何扩展
is-like-a 我实现了你,但我还扩展了,就像你的意思
has-a 持有对象的一个引用。
94. 里氏代换原则(LSP):任何类出现的地方,子类一定可以出现(is-a),这就是鼓励你用 完全实现的方式,而不是要你扩展。
95. 你看我们现在依赖于jdbc,依赖的是抽象,依赖他的接口,没有什么具体的实现 。我没写oracle的包,也没有写oracle的类。
96. 最好把接口里面的方法归一下类,如果你一个接口定义100个方法,如果一个方法有问题其它99可能就都不能用了,怎么办,分离成10个不就好了。
97. 其实接口隔离原则和迪米特法则说的是一个意思
98. 原则归原则,最后开发还是采用一个折中的方案来做,各自取得平衡就好了。
99. 不要为了模式而模式,为了原则而原则。
100. Dao设计模式,不属于Gof设计模式,属于j2ee设计模式,dao也是gof的一种特殊情况,是哪一种呢?策略模式,策略模式的意图就是可以替换,比如你去机场,你可以坐公交去,也可以打车去。
dao模式的意图,隐藏数据访问细节。
7. 利用反射和配置文件,结合工厂来搞就能达到最大的可重用性。
8. 在实际应用中,没有用标准的王勇画的那样的工厂图的方式来创建类的,其实没有多大意义。
9. 还不如直接把ItemDaoMySql配置到配置文件里,你还来个工厂 ,没有多大实际的意义。如果你要oracleDao我配进去就可以了啊。
10. 标准的GoF工厂方法模式,在实际中使用很少,因为工厂这一块是可以省略的,可以直接产品配置到配置文件中,标准的工厂方法模式图,主要便于我们理解模式,不应该生搬硬套的来使用它,不是说模式图怎么样,你就怎么用,你要真正理解透了,才能拿来用。
37. servlet对应一种设计模式,模板方法模型,设计模式,重复强调可重复利用的解决方案。
38. 了解模板方法和servlet的关系。
40. 子类的调用行为不是由自己控制的,而是父类来管理了,这不就是控制反转嘛,也就说抽象方法它的调用不是由子类控制的,反转给父类控制其调用,这个称为控制方向反转。
17. jndi他会以目录树的形式来管理对象,你看我们写连接池的时候,我也没写哥们你给我去找dbcp啊,我现在用dbcp,你没有这样声明吧,其实他就是一个工厂 ,什么叫工厂 呢?你可以这样理解,只要他隐藏产品创建细节,他就是一个工厂。这种工厂 不是那么绝对的一定要跟那个图一模一样,不是这样的,你要深层理解那个设计模式的话,他这个工厂就是隐藏产品创建细节。
18. 你只要拿到DataSource就可以了,你管他下面是什么呢?