Java与模式: 6大原则
1,OCP(Open-Close Principle)开闭原则
Software entities should be open for extension,but closed for modification,(在设计一个模块的时候,应当使这个模块可以在不被修改的前提下扩展)。
对扩展开放open,对修改关闭close。如何实现?
(1),抽象化是关键;
(2)对可变性的封装原则(Principle of Encapsulation of Variation EVP)。用我自己的话来说,在我们设计模块的时候,要将其他“类似”的类,提取出来共同的代码,就是所谓的“抽象”。而对于哪些代码放在抽象类里面去,就是存在可变性的地方.对于这点,我还没有体会到。典型容易理解的列子,工厂模式。当需要新增加一个类的时候,直接继承product接口就可以了。
2,Liskov Subsitution Principle(LSP)里氏代换原则
就是子类可以代替父类出现的任何地方,在抽象的时候,重要的要理解的一个地方两个类之间是什么关系,是“has-A”?还是“Is-a”的关系。在“has-a”的关系中,两个类存在的是依赖的关系(在类A里面存在类B的的变量);在“Is-a”的关系中,可以提取这两个类的“共同代码”放在抽象类C中,然后A,B继承与C,这也是一种重构。
3,Dependency Inversion Principle(DIP)依赖倒转原则
就是在我们编程的时候方法的参数类型,变量,对于其他具体类的依赖,我们尽量的使用抽象类。就是说尽量依赖于抽象,而不是依赖于实现。
在书中两种表述:
(1),Abstraction should not depend on details.details should depend on abstraction. (抽象不应当依赖于细节,细节应当依赖于抽象)。Abstraction就像是建筑物的基础,而其实现类就是在基础上面一层一层的往上面走。你拆掉最上面那层,和拿走最下面的基础,有什么不同了,这就是差异了。所以Abstraction是要相当的稳定,是维护的重点。也正是因为稳定,所以我们尽量的依赖于Abstraction,既是
相关文档:
jsp中实现文件下载的最简单的方式是在网页上做超级链接,如:<a href="music/abc.mp3">点击下载</a>。但是这样服务器上的目录资源会直接暴露给最终用户,会给网站带来一些不 安全的因素。因此可以采用其它方式实现下载,可以采用:1、RequestDispatcher的方式进行;2、采用文件流输出的方式下载。
1、采用Re ......
组的概念, 提取组信息
/**
* 正则表达式可以划分不同的组,取出组的名称,括号即可, 即所谓的捕获组
* 1. 相关知识: 不捕获用(?:expression) 表示这组不需要捕获
*
*
*/
public static void groupTest() {
String src = "xxxxxxxxxx2009-1-17-19-07-16yyyyy2001-02-18-19-07-16q";
String regex ......
1.java project环境,使用java.io用相对路径读取文件的例子:
*目录结构:
DecisionTree
|___src
|___com.decisiontree.Sampl ......
明天有一个新的就业班开课了,有的同学决定转班,自己心里也挺矛盾的,犹豫不决!
去可以让自己对基础更加熟练,毕竟所有的知识都是新东西,如果有更多的时间练习,效果一
定更好!不去是觉得原理都懂得了,只要坚持上完剩下的课程,可以再去慢慢练习代码,没有
必要浪费时间?好矛盾,明天找张老师咨询下....
今 ......