摘要:设计模式
终于要开始写Java的23种设计模式的博文;啦,虽然以前学过,但是因为都没有记笔记,也没有保存代码,导致现在早已经抛到九霄云外,这里开始23种设计模式的笔记整理,代码会上传到GitHub上面,方便以后查看,有需要的博友们也可以下载下来阅览阅览。毕竟是笔记,当然比不上网上的大神么,但是只要自己理解就可以啦。
一、设计模式的分类
设计模式总体来说分为三大类:创建型、结构型、行为型。
二、创建型
创建型模式共有下面五种
工厂方法模式(Factory Method):(普通工厂模式,多个工厂方法模式,静态工厂方法模式)
抽象工厂模式(Abstract Factory): 多个工厂类实现一个抽象工厂类 有利于扩展
单例模式(Singleton) :要考虑多线程问题,一般工厂就是单例
建造者模式(Builder): 建造一批对象
原型模式(Prototype) : 克隆,深克隆要序列化用流
三、结构型
结构型模式共有下面七种
适配器模式(Adapter): 类的适配器 对象适配器 接口适配器
装饰器模式(Decorator) :IO
代理模式(Proxy) : 自己不会做,给别人做
外观模式(Facade) : 门面(电脑启动:CPU,内存,硬盘)
桥接模式(Bridge) : 数据库驱动
组合模式(Composite) : 二叉树
享元模式(Flyweight) 数据库连接池
四、行为型
1、第一类 父类与子类
策略模式(Strategy) : 算法比较多,就是提供很多算法,用户自选,多用在算法决策系统中,外部用户只需要决定用哪一个算法即可。
模板方法模式(Template Method) : 这个比较有用,用户只需要实现关键方法即可。
2、第二类 两个类自检
观察者模式(Observer): 邮件订阅模型
迭代子模式(Iterator) :集合对象的遍历迭代Iterator
责任链模式(Chain of Responsibility) : 我觉得Struts2的拦截器就应该是责任链模式
命令模式(Command) : struts的请求
3、类的状态
备忘录模式(Memento) : 我觉得应该只能备份String 基础类型,毕竟如果是引用的话一直是一个对象,没有切断联系
状态模式(State) : QQ的状态 就是根据一些状态不同,执行不同的操作
4、通过中间类
访问者模式(Visitor) : 一种操作业务已经既定,只要把访问者传过来即可 访问者只需要调用这种业务的方法即可
中介者模式(Mediator) : 类与类之间的关系交个中介来维护,喵的有点像spring
解释器模式(Interpreter): 用来解释一些问题的比如正则表达式
五、设计模式六大原则
1、开闭原则(Open Close Principle)
对扩展开放,对修改关闭。为了实现这一点,我们需要使用接口和抽象类。
2、里氏代换原则(Liskov Substitution Principle)
任何基类可以出现的地方,子类一定可以出现。
3、依赖倒转原则(Dependence Inversion Principle)
直接对接口编程,依赖于抽象,而不依赖于具体。
4、接口隔离原则(Interface Segregation Principle)
使用多个隔离的接口,比使用单个接口要好。目的是降低依赖,降低耦合。
5、迪米特法则(最少知道原则)(Demeter Principle)
一个实体应该尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立
6、合成复用原则(Composite Reuse Principle)
原则是尽量使用合成/聚合的方式,而不是使用继承