一、什么是设计模式
一套被反复使用,多数人知晓的经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码,让代码更容易被他人理解,保证代码可靠性。
创建型
结构型
行为型
二、简单工厂模式
又叫静态工厂方法模式,它定义了一个具体的工厂类负责创建一些类的实例
优点:客户端不需要再负责对象的创建,从而明确了各个类的职责
缺点:这个静态工厂类负责所有对象的创建,如果有新的对象增加,就需要修改工厂类,不利于维护
三、工厂方法模式
工厂方法模式中抽象工厂类负责定义创建对象的接口,具体对象的创建工作由继承抽象工厂的具体类实现
优点:客户端不需要再负责对象的创建,从而明确了各个类的职责,如果有新的对象增加,只需要增加一个具体的类和具体的工厂类即可,不影响已有的代码,后期维护容易,增强了系统扩展性。
缺点:需要额外的编写代码,增加了工作量;
四、单例设计模式(饿汉式、懒汉式)
单例模式就是要确保类在内存中只有一个对象,该实例必须自动创建并对外提供
优点:在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能。
缺点:没有抽象层,英雌扩展很难,职责过重,一定程度上违背了单一职责原则。
饿汉式(不会出问题,开发使用),Runtime类:
A:私有构造方法 private Student(){}
B:在成员对象位置自己创建一个对象private static Student s = new Student();
C: 提供公共的访问方式public static Student getStudent(){return s;}
懒汉式(线程安全问题):
A:私有构造方法 private Student(){}
B:在成员对象位置自己创建一个对象private static Student s = null;
C: 提供公共的访问方式public synchronized static Student getStudent(){if(s == null){s = new Student()}return s;}
五、模板设计模式(抽象类):定义一个算法的骨架,具体实现放到子类
六、装饰模式
装饰模式是使用被装饰类的一个子类的实力,在客户端将这个子类的实力交给装饰类,是继承的替代方案