设计模式理解---之一

时间:2022-12-10 20:14:40
 

----6大原则
这只是一个基本的原则,在实际中有时用是矛盾的,要权宜而行
1、单一原则
从职责的角度来讲,业务需求
2、里氏替换
子类可完全代替父类、子类覆盖父类是可以放大自己方法的参数、和方法的权限、返回值可以缩小范围,注意理解
3、依赖倒置
细节依赖于抽象,契约
4、接口隔离
一般的类都会有借口,借口要保持纯洁,不要太臃肿,和该类无关的方法不要再借口中,一个类可以设置多个借口、还记得美女类嘛,不同时期美女的标准时不一样的
5、迪米特法则
对于高层(高层不用关心细节)知道的越少越好
6、开闭原则
开扩展关修改
---------------模式
1、单例模式
1)懒汉式(static 方法中new)和饿汉式(static final 属性new)、一般用饿汉式、因为懒汉式在高并发的情况下可能在内存中会出现多个
2)单例只有一个实例,注意垃圾回收机制,如果这个很常见没有使用,会被销毁,在应用中要注意保存实例状态等信息。
特殊:有上限的单例模式
2、工厂模式
一个车间生产零件
3、抽象工厂
可以理解为特殊的工厂模式,可以理解为不同的车间,生产的零件
4、模板方法模式
父类调用子类,其实这样说是错误的,在抽象类中定义了子类的执行顺序,子类的执行顺序都是一样的,,父类的这个模板一般是把子类的这些操作重新组装,子类可以不再关心她,直接调用执行就可以了,父类的这个方法一般是final的,禁止子类覆盖修改的

5、建造者模式
一般和建造者模式一起来使用,建造者模式注重的是零件(模板中的零件,)的装配顺序,而产生很多模板,而工厂模式注重的是对象的产生和创建,不是装配,即组装的顺序。
该模式经常和模板方法模式一起使用,模板方法模式把公共定死的顺寻写到抽象的父类中,对于建造者模式负责组织动态产生的模板、即有一个建造者类,吧模板的基本零件在这里一一组装,而产生新的模板,对于建造者比较多的一般会有一个导演类,负责调用建造者类产生模板(有点像一个客户端)
6、代理模式
动态代理和静态代理
7、原型模式
1)、注意深copy和浅copy
2)、原型模式是不会执行构造方法的,即时有点也是缺点,因为他是以二进制流的形式在内存copy的
3)、final的类型是不能copy的
白话:1)一般对于一系列事物的处理,前后的各种状态,可以用他来比较,在修改时copy一份 ,等等
 2)他比new要快很多,
 3)如果已知一个对象,要在这个对象上稍加修改后可以生产很多对象可以用这种模式、(人从1岁、到2岁、...30岁)
8、中介模式
多个类之间存在多对多的关系,即类图是网状的关系,可以考虑用中介这模式、来协调各个类之间的关系,可以有多个中介者,,把关系类似的放到一起来管理。
经典案例就是MVC
区分他和代理之间的关系