1.在java中为什么不允许从静态方法中访问非静态变量?
不是允许不允许的问题,是这个时候非静态成员变量都还不存在,他是伴随着对象的创建而创建的,根本无法访问。
静态方法可以不通过对象进行调用 在对象尚未创建的时候就可以调用,而此时对象尚未创建,非静态成员变量根本都还不存在,何谈访问?
这也是单例模式的唯一实例为什么设置为静态的原因。
2.软件架构中的上层应用是指哪些层,客户端属于上层应用吗?
刚开始听说过OSI七层网络模型(物理层,数据链路层,网络层,传输层,会话层,表示层,应用层),后面又接触到TCP/IP协议,其实也是遵循OSI七层网络模型,只是将OSI的应用层,表示层和会话层归并到应用层而已。
再后来用的mvc、mmvm等,其实都是一种分层设计,旨在每层都封装一个概念并保持独立,同时根据依赖倒置的原则,站在上层客户的角度提供接口,大大降低了客户程序与实现细节的耦合度。
上层应用是相对来说的吧,上层概念是一种抽象、不特定的整体概念,就拿mvc来说,从下至上分别为:数据访问层、业务逻辑层、表示层。表示层最接近客户,展示客户信息,那么可以说数据访问层、业务逻辑层应用都是客户端的上层应用。客户端是不是上层应用,要看相对于什么来说。