一、七大原则
- 开闭原则:对代码扩展开放,对修改关闭。
- 里氏代换原则:子类重写父类方法应尽可能的扩展父类功能,但不能修改原有功能。是对开闭原则的补充
- 单一职责原则:一个类负责单一的职责。
- 依赖倒转原则:面向接口编程,依赖于抽象而不是具体实现。比如Service包和ServiceImpl,Mapper和MapperImpl
- 接口隔离原则:类与类的依赖关系应建立再最小的接口数量上。比如一个类实现一个接口,只用到了一个接口方法,但需要重写所有的接口方法,这样是不行的。
- 合成/聚合复用原则:尽量使用合成,而不是继承达到复用的目的。
- 迪米特法则(最少知道原则):一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。
二、单例模式——创造性模式
概念:每个类只产生一个实例。
实现方式:
1.懒汉模式
class LazySingleton{
//构造方法写成私有的,保证处内部方法外,在外部无法new出对象
private LazySingleton(){}
private volatile static instance = null;
public static LazySingleton getInstance(){
if(instance == null){
synchronized(LazySingleton.class){
if(instance == null){
instance = new LazySingleton();
}
}
}
}
}
2. 饿汉模式
//立即加载就会使用类,不管有没有,先new出来
class HungrySingleton{
//构造方法写成私有的,保证处内部方法外,在外部无法new出对象
private static final instance = new instance;
private HungrySingleton(){}
public static LazySingleton getInstance(){
if(instance == null){
return instance;
}
}
}
三、工厂方法模式——创造性模式
1.简单工厂——不是设计模式只是书写习惯,下面两个是工厂模式
在不暴露生成逻辑的前提下生成一个实例。
2.工厂方法
提供一个生产逻辑移交给子类。
3.抽象工厂
工厂内只有单个产品的时候,就是工厂方法模式。如果有多个产品就是抽象工厂。
四、模板方法模式——行为型模式
模板方法模式是类的行为模式。 准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。
比如HttpServlet,你需要重写doGet(),doPost(),会去service方法中调用doget(),dopost()。才能成功调用逻辑。
五、责任链模式——行为型模式
是类的行为模式。为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。
Tomcat中的Filter就是使用了责任链模式
六、代理模式——结构型模式
1.静态代理
指代码层面,编译器的代理。
2.动态代理
指 运行时的 代理对象做代理。
在Spring里面有讲述