设计模式-静态代理

1.静态代理实现要求

  1. 有真实的角色
  2. 有代理的对象
  3. 真实角色和代理对象实现同一个代理接口

2.静态代理事例

MarrayContent代理MarryPerson,MarryPerson只关注结婚其他事情都交给MarrayContent代理对象去做



public class StaticProxy {
   public static void main(String args[]){
       MarryPerson person = new MarryPerson();
       Marray content = new MarrayContent(person);
       content.marray();
   }
}

//代理接口
interface Marray{
    void marray();
}
//真实角色
class MarryPerson implements Marray{
    @Override
    public void marray() {
        System.err.println("结婚");
    }
}
//代理对象
class MarrayContent implements Marray{
    private MarryPerson marryPerson;
    public MarrayContent(MarryPerson marryPerson){
        this.marryPerson =marryPerson;
    }
    private void searchTarget(){
        System.err.println("寻找合适对象!");
    }

    private void detail(){
        System.err.println("婚后处理!");
    }
    @Override
    public void marray() {
        searchTarget();
        marryPerson.marray();
        detail();
    }
}

原文地址:https://www.cnblogs.com/mf001/p/8462075.html

时间: 2024-08-06 04:30:40

设计模式-静态代理的相关文章

设计模式(22)-----代理设计模式-----静态代理

一:用继承实现静态代理 1 package com.DesignPatterns.al.Dynamic1; 2 3 public interface Moveable { 4 public void move(); 5 } package com.DesignPatterns.al.Dynamic1; import java.util.Random; public class Tank implements Moveable { @Override public void move() { Sy

[设计模式]静态代理模式

Subject.java 1 package cn.itcast.proxy; 2 3 //定义一个抽象类,代理角色和真实角色都要实现这个共同的抽象类 4 public abstract class Subject { 5 //定义一个方法,这个方法就好比中介和房东都有向外租房子的方法 6 public abstract void request(); 7 } RealSubject.java 1 package cn.itcast.proxy; 2 3 //这个类好比是真正的房东.实现向外租房

设计模式—静态代理模式(聚合与继承方式比较)

一.概述 1.目标:要在Tank的move()方法做时间代理及日志代理(可以设想以后还要增加很多代理处理),且代理间的顺序可活更换 2.思路: (1)聚合:代理类聚合了被代理类,且代理类及被代理类都实现了movable接口,则可实现灵活多变,具体看代码 (2)继承:继承不够灵活,随着功能需求增多,继承体系会非常臃肿.具体看代码 二.代码 1.Movable.java 2.Tank.java 3.TankTimeProxy.java 4.TankLogProxy.java 5.Tank2Time.

设计模式(一) 静态代理

1.1.简单理解代理模式 代理(Proxy)是一种设计模式, 提供了对目标对象另外的访问方式:即通过代理访问目标对象. 这样好处: 可以在目标对象实现的基础上,增强额外的功能操作,扩展目标对象的功能.列如:我们有的时候打官司,我们需要请律师,因为律师在法律方面有专长,可以替我们进行打赢官司的操作,表达我们的想法.在这个列子中,我们就是目标对象,而律师就是代理对象,帮助我们完成我们所想的事情.当然打赢官司与打不赢这就是另外一回事了. 代理模式的关键点: 代理对象 与 目标对象. 1.2.静态代理

用过滤器和装饰者设计模式(静态代理)解决getParameter乱码问题

post的乱码问题比较好解决,这里主要是对get请求的乱码做处理 解决思路:增强request对象的getParameter方法,使之 getParameter  直接获取到的就是解决乱码后的数据 有四种方式, 1.继承 :(下下策) ①明确知道全类名 可以打印request实现类,可以知道实现类的全类名 ②就是可以在子类中 new 父类 你能确定request实现类,一定可以new么? 确定自己写出的是通用方法.tomcat,weblogic,jboss...... 缺点: ①很难实现,几乎没

Java设计模式-代理模式之静态代理

Java设计模式-代理模式之静态代理 概念 为另一个对象提供一个替身或占位符以提供对这个对象的访问,使用代理模式创建代表对象,让代表对象控制某对象的访问,被代理对象可以是远程的对象.创建开销大的对象或需要安全控制的对象 远程代理控制访问远程对象 虚拟代理控制访问创建开销大的资源 保护代理基于权限控制对资源的访问 看如下的类图: 仔细看上面的类图,首先是Subject它为RealSubject和Proxy提供了接口,通过实现同一个接口,Proxy在RealSubject出现的地方取代它,这点和适配

静态代理设计模式(StaticProxy)

静态代理设计模式: 要求:真实角色,代理角色:真实角色和代理角色要实现同一个接口,代理角色要持有真实角色的引用. 在Java中线程的设计就使用了静态代理设计模式,其中自定义线程类实现Runable接口,Thread类也实现了Runalbe接口,在创建子线程的时候,传入了自定义线程类的引用,再通过调用start()方法,调用自定义线程对象的run()方法.实现了线程的并发执行. 1 public class Test2 { 2 3 public static void main(String[]

【设计模式学习笔记】 之 静态代理

简介:静态代理设计模式可以理解为实际操作对象的代理,这个代理拥有实际对象的所有接口,代理对象中持有着实际对象的引用,但是这个代理对象在客户端调用接口的时候,将这些请求进行拦截,对请求数据进行预处理(相当于Filter),可以在预处理中做判断如果满足条件放行实际对象操作,否则代理对象处理并返回. 有几点需要注意: 访问代理对象的客户端并不知道这是一个代理对象,他只关心效果 代理对象可以对调用传参进行处理 特定的情况下代理对象可以代实际对象执行操作 初学亿图画个图,看样子还行,大家凑合看看:) 由于

Java代理设计模式(Proxy)的四种具体实现:静态代理和动态代理

面试问题:Java里的代理设计模式(Proxy Design Pattern)一共有几种实现方式?这个题目很像孔乙己问"茴香豆的茴字有哪几种写法?" 所谓代理模式,是指客户端(Client)并不直接调用实际的对象(下图右下角的RealSubject),而是通过调用代理(Proxy),来间接的调用实际的对象. 代理模式的使用场合,一般是由于客户端不想直接访问实际对象,或者访问实际的对象存在技术上的障碍,因而通过代理对象作为桥梁,来完成间接访问. 实现方式一:静态代理 开发一个接口IDev