设计模式是一套被反复使用、多数人知晓的,经过分类编目的的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码的可靠性。
JAVA优点:与平台无关,面向对象,健壮,安全,多线程,动态。
类:类是一种复杂的数据类型,他是将不同类型的数据和与这些数据相关的操作封闭在一起的集合体。
设计模式的六大原则:
l 单一职责原则所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。通俗的说,即一个类只负责一项职责,将一组相关性很高的函数、数据封装到一个类中。
l 开闭原则:开闭原则就是对扩展开放,对修改关闭。在程序需要进行扩展的时候,不能去修改原有的代码,实现一个热插拔的效果。一句话概括:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类。
l 里氏代换原则:里氏代换原则指明任何基类可以出现的地方,子类一定可以出现。LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是开闭原则的补充。实现开闭原则人的关键步骤是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。
l 依赖倒转原则:这个是开闭原则的基础,具体内容:针对接口编程,依赖于抽象而不依赖具体。
l 接口隔离原则:使用多个隔离的接口,比使用单个接口要好。还是一个降低类之间耦合度的意思,从这我们看出,其实设计模式就是一个软件的设计思想,从大型软件架构出发,为了升级和维护方便。
l 迪米特法则:一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。
合成复用原则:原则是尽量使用合成/聚合的方式,而不是使用继承。
1、单例模式
在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中的一个类只有一个实例。
单例模式三个要点:
一、某个类只能有一个实例;
二、它必须自行创建这个实例;
三、它必须向整个系统提供这个实例
懒汉式:
public class Singleton{
private Singleton(){}
private static Singleton single = null;
public static Singleton getInstance(){
If(single==null){
single= new Singleton();
}
return single;
}
}
线程安全的方法
方法一:
public class Singleton{
private Singleton(){}
private static Singleton single=null;
public synchronized static Singleton getInstance(){
if(single ==null){
single= new Singleton();
}
return single;
}
}
方法二:
public class Singleton{
private Singleton(){}
private static Singleton single = null;
public static Singleton getInstance(){
If(single==null){
Synchronzzed (Singleton.class){
If(single==null){
single= new Singleton();
}
}
}
return single;
}
}
方法三:
public class Singleton{
Private static class LazyHolder{
Private static final Singleton INSTANCE = new Singleton();
}
Private Singleton(){}
Private static final Singleton getInstance(){
return LazyHolder.INSTANCE;
}
}
饿汉式单例:
public class Singleton {
private Singleton(){}
private static final Singleton single = new Singleton();
public static Singleton getInstance(){
return single;
}
}
饿汉式和懒汉式区别:饿汉是类一旦加载,就把单例初始化完成,保证getInstance的时候,单例已经存在了,懒汉式比较懒,只有调用getInstance时,才会初始化这个实例。
单利模式的好处:控制资源的使用,通过线程同步来控制资源的并发访问;控制实例的数量,达到节约资源的目的;在不直接建立连接的情况下,实现多个线程或进程的通信
单例模式应用:数据库连接池;日志文件;计数器,任务管理器;配置文件;多线程连接池