设计模式是一种创建代码大楼的一系列方案。
设计模式需要满足七大原则
设计模式分为3类23种
设计模式的七大原则
-
单一职责原则:一个类一个职责
-
依赖倒转原则:面向接口编程,依赖抽象
-
接口隔离原则:类中依赖以最小接口声明
-
里氏替换原则:继承关系种不重写
-
开闭原则ocp:提供依赖允许扩展,使用依赖不允许修改
-
迪米特法则:提供依赖封装彻底,使用依赖在成员变量,方法参数,方法返回值
-
合成复用原则:尽量不使用继承,用依赖替代
类与类之间的关系
-
聚合:整体和局部不能分开
-
组合:整体和局部可以分开
-
依赖:使用就是依赖
-
继承:一个类继承一个类
-
实现:一个类实现一个接口
-
关联:类和类之间的一对一关系或一对多关系
创建型模式
模式一:单例模式
目的要求
-
目的
-
全系统使用一个该类的实现对象
-
大量使用该对象的时候,不用创建和销毁【提高性能】
-
-
要求
-
构造器私有化
-
静态方法获取对象
-
一共有八种方式
-
饿汉式一:直接在静态属性创建对象。
-
饿汉式二:在静态属性后面的静态代码块中创建对象。
-
懒汉式一:【线程安全】静态方法获取的时候创建对象。
-
懒汉式二:对获取对象的方法设置成同步方法。
-
懒汉式三:对获取对象的方法先判断非空再创建对象设置成静态代码块最后创建对象。
-
双重检查:对获取对象的方法先判断非空再创建对象设置成同步代码块再判断非空最后创建对象。
-
静态内部类:获取对象的方法调用静态内部类的静态方法创建对象。
-
枚举:定义成一个枚举类就行。
模式二:工厂模式
目的要求
-
目的
-
提高代码的可扩展性
-
-
要求
-
将创建对象的代码交给工厂去创建
-
简单工厂模式:披萨父类有不同口味子类,静态工厂去创建不同口味子类。
工厂方法模式:披萨父类有不同口味不同地区子类,工厂方法对象由子类工厂提供给父类。
抽象工厂模式:披萨父类有不同口味不同地区子类,抽象工厂作为接口具体实现交给子类工厂。
模式三:原型模式
目的要求
-
目的
-
动态克隆对象
-
-
要求
-
原型类声明可以克隆自己的接口
-
调用Object的clone方法
-
注意事项
-
clone方法是浅拷贝
-
深拷贝一:重写clone方法
-
深拷贝二:序列化和反序列化
模式四:建造者模式
结构型模式
:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式
:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。