![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
chenxiaokang97
目标设到月球,即使失败,也能落到众星之间。
展开
-
里氏替换原则,LSP
所有引用基类的地方必须能够透明地使用其子类的对象。通俗点讲,只要父类能出现的地方子类就可以出现,而且替换为子类也不会产生任务异常。我们知道面向对象语言的三大特性就是继承、封装、多台,里氏替换原则就是依赖于继承、多态,建立抽象,通过抽象建立规范,在运行时替换成具体的对象,保证系统的拓展性、灵活性。往往和开放封闭原则不离不弃。父类中凡是已经实现好的方法(相对于抽象方法而言),实际上是在设定一系列的规范...原创 2018-07-12 18:13:16 · 228 阅读 · 0 评论 -
依赖倒置原则
高层模块不应该依赖具体底层模块,两个都应该依赖接口。简单的说就是面向接口编程,而不是面向具体实现。任何变量都不应该持有一个具体指向类的指针或引用。在实际编程中,我们一般需要做到:低层模块尽量都要有抽象类或接口,或者两者都有。变量的声明类型尽量是抽象类或接口。使用继承时遵循里氏替换原则。依赖倒置有三种方式来实现:通过构造函数传递依赖对象;比如构造函数需要传递的参数是抽象类或接口通过setter方法传...原创 2018-07-12 18:13:41 · 170 阅读 · 0 评论 -
Singleton
单线程Singletonpackage cn.chen.design; public class Singleton { private Singleton(){} private static Singleton instance; public static Singleton getInstance(){ if(i...原创 2018-07-17 17:40:23 · 175 阅读 · 0 评论 -
静态代理
静态代理代理对象和被代理对象实现同一个接口package cn.chen.proxy;public interface Moveable { void move();}package cn.chen.proxy;public class TankTimeProxy implements Moveable{ Moveable tank; pu...原创 2018-07-24 21:52:13 · 168 阅读 · 0 评论 -
JDK提供的动态代理
JDK提供的动态代理提供接口和实现类package cn.chen.proxy.jdk;public interface UserMgr { void addUser();}package cn.chen.proxy.jdk;public class UserMgrImpl implements UserMgr { @Override publ...原创 2018-07-25 13:23:56 · 192 阅读 · 0 评论 -
cglib实现动态代理
cglib实现动态代理代理逻辑package cn.chen.proxy.cglibproxy;import net.sf.cglib.proxy.MethodInterceptor;import net.sf.cglib.proxy.MethodProxy;import java.lang.reflect.Method;public class TransCglib...原创 2018-07-25 13:47:59 · 179 阅读 · 0 评论