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,既是
相关文档:
在成功实现Java调用C++之后,接下来想到能否通过JNA实现Java调用Fortran,今天试验了一下,还是比较容易的。
网上有一个Java调用F95的例子,但是我考虑不仅要实现F95的调用,还要实现F77的调用,所以费了一些周折。
问题的关键在于F77为过程名自动添加了一个尾部的下划线,所以sub1这个过程,到Java一端,就变成了sub1_, ......
最近公司碰到需要用图表的形式显示一些数据,我就开始到网上查询,查到了jfreechart和amcharts,这两者我都实现过了,jfreechart最后生成图片,但是图片效果不是我想要的,然后又研究amcharts 它的效果确实很好,而且官方网站上还有好些例子可供下载,网址是:www.amcharts.com
(想要完成一个amcharts图形需要swfobjects. ......
记录一下
Java ACC
Java ACC规范定义了授权策略模块和J2EE容器之间的实现规范,这样容器安全提供者就可以根据操作环境的要求提供J2EE容器的授权功能。
Java ACC规范分为三个部分,分别是:提供着配置规范,安全策略配置规范,策略判断和执行规范。这三个部分组合在一起共同描述了授权提供者的安装和配置,J2EE容器使用者 ......
1、测试方法如下:
public static String toUtf8(String str) {
return new String(str.getBytes("UTF-8"),"UTF-8"):
&nb ......
前几天,湖南SEO在用jsp写一个企业站程序的时候,因为要参加项目答辩竞选,所以就想为自己写的程序搞几个亮点,因为搞SEO久了,不自觉就会想到伪静态,但是在百度查了一个下午,只查到了urlrewrite架包的下载地方,和架设方面的文章,并没有jsp(JAVA)伪静态的具体操作示范,有的也只是,单页面的伪静态的写法,这里我就重头 ......