DRP总结(三)

 

1.       接口和抽象类的区别

l         接口描述了方法的特征,而不给方法的实现,接口的出现一方面是解决java的单继承问题,另一方面是实现了方法的可接插性(动态调用才构成多态)

l         抽象类提供了部分实现,抽象类不能实例化,抽象类的存在主要是把公共的代码移到抽象类中,尽可能从抽象类继承,而不从具体类继承

l         接口的属性必须是常量(public static final),而抽象类的属性没有要求

l         接口的每个方法只是声明不包括内容,抽象类的方法既可以是抽象的也可以不是抽象的,一般至少有一个抽象的

 

2.       类之间的关系

l         一般化关系  类与类之间的继承关系,接口与接口之间的继承关系,类与接口的实现关系

l         关联关系    类与类之间的连接,一个类可以知道另一个类的属性和方法,在java语言中使用实例变量体现

l         聚合关系    关联关系的一种,是较强的关联关系,是整体和部分的关系,它与关联关系不用,关联关系的类处在同一个层次,而聚合关系的类处在不平等的层次,一个代表整体一个代表部分,在java中使用实例变量体现

l         合成关系    关联关系的一种,比聚合关系强的关系,整体对象负责部分对象的生命周期,部分对象在每一个时刻,只能与一个对象发生合成关系,在java语言中使用实例变量体现

l         依赖关系    比关联关系弱的关系,在java语言中体现为返回值,参数,局部变量和静态方法调用

 

3.       is-a, has a is-like-a 的含义

 

is-a:   AB完全属于I1的孩子是is-a方式(没有扩充),CI1is-like-a方式

public interface I1 {

        public void m1();

}

public class A implements I1 {

        public void m1() {

}

}

public class B implements I1 {

        public void m1() {

}

}

public class C implements I1 {

        public void m1() {

}

public void m2(){

}

}

 

has-a持有对方引用关联关系

public class A{

B b = new B();

}

public class B{

    public hello1() {}

}

 

4.       软件设计原则

l         OCP(开闭原则),对扩展开放,对修改关闭;

l         里氏代换原则(LSP),任何类的出现地方,子类一定可以出现(is-a

l         依赖倒转原则(DIP),尽量依赖于抽象,而不要依赖于具体,(为什么叫面向抽象编程,面向接口编程?就是这个原理)

l         接口隔离原则(ISP):尽量提供可能小的单独接口,而不是提供大的总接口,使通信尽可能窄。(不用提供特别大的,分类)

l         合成复用原则(CARP),尽量使用合成,聚合关系达到复用,而不要用继承关系达到复用。

l         迪比特法则(LOD),一个软件实体应该尽可能少的与其它实体发生作用(一个类要调用好多类才能实现的话,这样如果有些类改变了会造成影响)

 

 

5.       DaoData Access Object)数据访问对象,属于J2EE设计模式。属于GoF中策略模式的特例,用一个Dao接口隐藏了持久化操作的细节,这样使用这个模式的业务对象,无需了解底层的数据库持久化知识。区分业务逻辑持久化逻辑通常是有好处的,业务逻辑通常关心的是应用程序的核心流程和业务规则,持久化逻辑关注的是如何访问和操作持久化数据。换句话说:把业务逻辑和规则放在一边,与持久化相关的问题放在另一边。

6.       Properties文件的读取

Properties props = new Properties();

InputStream   is =                                                          ItemManager.class.getResourceAsStream("factory-class-mapping.properties");

props.load(is);

String className = props.getProperty("item-dao-factory");

this.itemDaoFactory=(ItemDaoFactory)Class.forName(className).newInstance();

 

 

7.       Tomcat解决get提交乱码问题,需要在TOMCAT_HOME/conf/server.xml文件中进行配置,加入URIEncoding=”GB18030”属性 如:

<Connector port="8080" maxHttpHeaderSize="8192"

maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

enableLookups="false" redirectPort="8443" acceptCount="100"

connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GB18030"/>

 

8.       实体类与普通类的区别:实体类的属性与数据表字段对应,实体类具有OID(对象标识),OID与数据库中的主键对应

User.java(实体类,实体类是比较简洁的,体现了现实中的属性,它的行为不要混在一起,类的职责明确很重要,这样便于管理,职责划分,划分的越细,重用程度就越高)

UserManager.java(管理类,体现了现实中的行为,我们通过管理类来管理,通常采用单例模式,因为它没有状态)

 

9.       jsp页面字符集声明的含义

pageEncoding :表示jsp文件本身的编码

contextType:表示响应HTTP内容的类型,客户端最终见到的页面内容的编码

<%@ page language="java" contentType="text/html; charset=GB18030"

pageEncoding="GB18030"%>

 

10.    管理类

通常一个模块就暴露一个类就可以了,所以把读取树的类放到manager类里让客户端访问,这也是一个门面模式,fasader模式。如果每个类都暴露,让客户端觉得复杂,来回调用好几个类才能完成某个功能。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值