1.面向接口编程(这是Java编程里公认的第一原则)
2.优先使用对象组合而非类继承
3.分层(表现层,逻辑层,数据层)
表现层:展示数据,人机交互,收集参数调用逻辑层
逻辑层:进行数据逻辑校验,逻辑判断,实现业务功能,处理相关功能,处理 后续流程,组织数据返回给表现层
数据层功能:实现数据持久化,实现对象和持久化数据的双向映射。
层间交互的基本原则:
1.表现层调用逻辑层,逻辑层调用数据层,不可以反过来
2.层间交互也应该通过接口进行调用,以确保各层的实现独立变化。
基本原则2:
1.开闭原则:
就是对新增开放,对修改关闭。应尽量做到不用修改模块的源代码,就能更改模块的行为
2.依赖性倒置原则
就是依赖抽象而不是依赖具体的实现
3.接口隔离原则
就是不要使用通用的接口,而是为不同的用户使用不同的接口
4.替换原则
就是子类应当可以替换父类并出现在父类能够出现的任何地主。
类设计原则:
1.类要单一:加强内聚,松散耦合,好的封装,类的粒度要合理
实现类不能依赖它的使用类,应考虑灵活性,也就是可配置,可维护,
考虑性能,考虑可伸缩性,可扩展性,合理的复用。考虑接口和抽象类的使用。(既要约束子类的行为又要为子类提供公共的功能时使用抽象类)尽量减少类与协作类的交互次数和交互信息的量。父类不应知道子类的信息,子类必须知道父类的信息。更多使用类的组合,而不是继承。访问对象必须使用接口,不能绕过接口。
---------------------------------------------------------------------------
设计模式:
描述一个设计模式,通常包含以下4个部分:
1,模式名称,就是为每个设计模式取个名字,便于交流和使用
2,环境和问题:描述在什么场景下,出现什么样的特定的问题
3,解决方案:描述如何解决这个问题
4,效果:描述模式可能带来的问题,或者使用中需要权衡的问题
单例模式:
场景和问题:在Java程序中,如何确保在运行期间,某个类只有一个实例
本质:控制实例数目
体现的一些思想:延迟装载,缓存
1 package singleton; 2 3 public class SingleClass { 4 //确保多线程模式下的安全,以空间换时间,缓存了一个实例 5 private static SingleClass instance = new SingleClass(); 6 //确保外部不能调用构造方法 7 private SingleClass(){} 8 //提供单一实例 9 public static SingleClass getInstance(){ 10 return instance; 11 } 12 13 } 14 15 //此种方式可能会有多线程问题,但是以时间换取了空间,延迟装载,在不会出现多线程的问题环境中应该优先使用 16 class SingleClass2{ 17 private static SingleClass2 instance; 18 19 private SingleClass2(){} 20 21 public static SingleClass2 getInstance(){ 22 if(instance == null){ 23 instance = new SingleClass2(); 24 } 25 return instance; 26 } 27 }
工厂方法:
场景和问题:面向接口编程中,如何得到接口呢?
解决方案:使用工厂方法
本质: 负责选择接口的实现,返回给客户接口