java常用设计模式总结
设计模式了解
什么是设计模式?
设计模式(Design pattern)是一套被反复使用的代码设计经验的总结。
为什么使用设计模式
使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性以及代码的结构更加清晰.
设计模式的7大原则
1、单一职责原则
一个类只负责一项职责。
2、接口隔离原则
一个类对另一个类的依赖应该建立在最小接口上。
3、依赖倒转原则
①高层模块不应该依赖底层模块,二者都应该依赖其抽象
②抽象不应该依赖细节(实现类),细节应该依赖抽象
③依赖倒置的中心思想是面向接口编程,使用接口或抽象类的目的是制定好规范,而不涉及任何具体的操作,把展现细节的任务交给他们的实现类去完成。
依赖传递的方式:
接口传递
构造方法传递
setter方法传递
[ ] 详细说明
4、里氏代换原则(Liskov Substitution Principle)
子类中尽量不要重写父类的方法。如果重写,可以将父类中要重写的方法提取到新的类,两个类同时继承新的类,这样做可以降低耦合性。
5、开闭原则(Open Close Principle)
在程序需要进行拓展的时候,不能去修改原有的代码,实现一个优化的效果。对扩展开放,对修改关闭。
6、迪米特法则(最少知道原则)(Demeter Principle)
一个类对自己依赖的类知道的越少越好。被依赖的类不管多么复杂,都尽量将逻辑封装在类的内部。对外除了提供public方法之外,不对外泄露任何信息。
7.合成复用原则
原则是尽量使用合成/聚合的方式,而不是使用继承。
设计模式分类
有23种,三大类设计模式。
创建型模式(用于解耦对象的实例化过程): (5种)
单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。
行为型模式(对象的功能): (7种) 把。
适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。
结构型模式(对象的组成): (11种)
模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。
设计模式详细介绍
创建型
1、单例模式
这个类只能有一个实例,提供全局访问
私有构造方法,私有静态对象,提供公有静态getInstance()方法获取实例。
饿汉:不管需不需要都先创建好(浪费空间)
静态常量
public class Student {
private Student() {
}
private static Student s = new Student();
public static Student getInstance() {
return s;
}
}
静态代码块
public class Student{
private Student(){
};
private statice Student s;
static{
s=new Student();
}
public static Student getInstance() {
return s;
}
}
懒汉:需要的时候再创建实例
线程不安全
public class Student {
private Student() {
}
private static Student s =null ;
public static Student getInstance() {
if(s==null) {
s = new Student();
}
return s;
}
}
同步方法(不管是否实例化都加锁,会影响效率)
public class Student {
private Student() {
}
private static Student s =null ;
public static synchronized Student getInstance() {
if(s==null) {
s