关闭

java 关于初学面向对象的问题九:java开发的某些机制

107人阅读 评论(0) 收藏 举报

代理模式:为对象提供一个代理以控制对该对象的访问
作用:增加或者减少服务
实现方式: 

1、继承 静态代理 不推荐使用 高耦合度
2、关联方式 静态代理 依赖 接口 有一个接口,真实类实现该方法,代理类也实现该方法,并且真实类是代理类的一个属性
抽象类 -》真实类 -》代理类 耦合度低
3、动态代理 反射机制 动态创建类 JDK动态代理类:
实现接口 InvocationHandler 方法 Object invoke()
参数:被代理对象  执行的方法  方法参数
Proxy类 newProxyInstance()
参数: 被代理的类加载器  被代理实现的所有接口 一个代理类处理逻辑的地方

代理的处理方法:

  1. 代理类与真实类继承自同一接口
  2. 代理对象持有真实对象的引用
  3. 代理的方法与被代理的方法要求同样的声明
  4. 方法体插入代理类自有代码《可选》
  5. 方法体调用真实类方法
  6. 方法体插入代理类自有代码《可选》
  7. 代理类允许有自己的方法

装饰模式:

类似于BufferedOutputStream和OutPutStream之间的关系

装饰模式的处理方法;

  1. 构建原始类
  2. 构建装饰类,持有原始类的对象为属性
  3. 在构造方法中将原始类对象传入
  4. 构建同样的方法声明,在方法体中调用原始类方法,再添加其它方法
  5. 装饰类允许有自己的方法
关于类的功能扩展的几种方式的区别:
1、代理模式:主要是控制访问
2、装饰模式:主要是增加功能
3、继承:增加功能,增加属性

工厂模式:根据传入参数的不同而返回不同的实际对象。
工厂模式的处理方法:
  1. 有一个工厂类,工厂类持有需要生产的产品的引用,并且提供一个静态的返回值为产品接口的带参数的方法
  2. 有一个接口(或者抽象类,一般不为类),该接口是工厂需要生产的产品
  3. 至少有一个类实现了该接口,实现该接口的所有方法,也许每个实现类的方法是不一致的,一般情况下他不具有接口定义以外的方法
  4. 在工厂类的静态方法中,通过判断传入的参数来决定返回值得不同,返回值是直接创建一个对应的产品对象
优势:在新增一个类的时候,只需要在方法中添加一个判断条件即可。
可以动态改变返回的对象值

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:7969次
    • 积分:206
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:0篇
    • 译文:0篇
    • 评论:4条
    最新评论