七大原则
单依职责原则:一个类型new一个类,不new其他类
开闭原则:在不修改本类的情况下,添加新的功能
里氏替换原则:以父类之名new出子类实例,或者以接口new出实例,
这样子类就可以访问父类中的共有属性方法,如果new本身子类就会调本身的属性方法
依赖倒置原则:面向接口编程,通过接口定义 方法给类调用,一个类型多个接口
接口隔离原则:接口有明确目的,细分接口,让每个接口做一件事情,极度解耦
迪米特法则:将类的组成部分几乎都封装隐藏起来,通过一个接口调用这个方法;
合成复用原则:也就是在一个新对象里通过关联的方式使用已有对象的一些方法和功能。
简单工厂:
通过一个工厂类实现多态转换
在创建工厂的时候 为这个四个类实例化,那么需要指定new 1() ,
如果是工厂模式的话,封装成为一个方法通过这个方法,设计要new的类降低了代码直接的耦合度
工厂模式:
1.创建一个抽象,这个抽象是具体实现的功能
2.创建一个类,来实现这个抽象。
3.再次创建一个抽象,完成多个实现这个抽象使用的类型
4.实现这个再次抽象,返回 实例使用的类
5.调用这个实例类
本质上开始依赖倒置原则
静态代理模式:
在不修改本类的情况下 添加新功能(符合开闭原则)
动态代理模式
接口代理:创建一个接口实现这个功能 通过接口代理,增强方法
添加了一个Proxy 对象和 InvocationHandler接口
在不修改本类的情况下 添加新功能(符合开闭原则)
CGLib代理模式
CGLib代理:创建一个父类现这个功能 通过CGLib代理,增强方法
虽然子父类关系,但是没有接口实用性强,但不是不强
Enhancer enhencer = new Enhancer();
添加一个MethodHandler SuperInvoke, setCallBack
getSuperClass(Class参数)
object.create()