静态代理模式
例如 工厂的大米 和 超市中售卖大米。超市售卖大米要从工厂进货,然后可以换成大包装卖,或者小包装抽真空卖,还可以散装卖。不管超市想怎么卖,其实就是把工厂的米换个包装方式,根据客户需要来出售,这样换包装有利于大米卖出去。
例如 100块钱的人民币,过年的时候 我们最好用例如新年快乐的红包装;人家结婚的时候,最好用例如新婚快乐的红包装;人家生日的时候,实在找不到生日快乐的红包,也可以用恭喜发财的红包来转。总之比直接拿100块现金,给人家要体面一些。 核心都是给100块钱。
我们在写代码的时候,就是围绕这个大米、100块钱 来写。大米和超市售卖时的大米是有共同特征:大米。虽然可以不将这个特征提取出来,但是出于某种我尚不清楚的原因,利用接口的方式,将这个“大米”的特征给规范好,保证超市的大米,和所进货的大米有共同的特征,不会把大米弄错成小麦。消费者去买大米时,就直接去买超市买。
超市卖大米,就是一个代理"poxy",它需要实现“大米”的所有的特征,工厂大米也要实现“大米”的所有特征,要不然这个大米就不完整,说不定大米在工厂是米,在超市却是还没有脱壳的稻谷。
然后超市在“大米”的接口的基础上,进行一系列的包装。消费者直接去工厂买大米,肯定会遇到很多问题,不如在超市买米方便。 包红包也是如此,直接给钱,会有些不礼貌,不体面。
这就是我理解的静态代理的意义已经 接口- 被代理对象-以及代理对象。代理对象的内容最丰富。
被代理对象 和 代理对象都是普通类。我们需要将被代理对象实例化才能使用。 去超市买米,我们买的其实是 工厂的米(被代理对象)。 在代码模式的使用中,需要实例化被代理对象(工厂的米),然后才能在超市中购买到(超市就是代理对象POXY)。可以是在main方法中实例工厂的米,也可以是在 超市中(poxy中)实例化工厂的米。