`
chenhongwei0924
  • 浏览: 42519 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

代理模式【PROXY PATTERN】

阅读更多
public class Main
{
    public static void main(String[] args)
    {
        PrinterProxy p = new PrinterProxy("Alice");
        System.out.println(p.getPrinterName());
        p.setPrinterName("Bob");
        System.out.println(p.getPrinterName());
        p.print("Hello, world.");
    }
}

interface Printable
{
    public abstract void setPrinterName(String name);
    
    public abstract String getPrinterName();
    
    public abstract void print(String string);
}

class Printer implements Printable
{
    private String name;
    
    public Printer()
    {
        heavyJob("Printer");
    }
    
    public Printer(String name)
    {
        this.name = name;
        heavyJob("Printer()" + name);
    }
    
    public void setPrinterName(String name)
    {
        this.name = name;
    }
    
    public String getPrinterName()
    {
        return name;
    }
    
    public void print(String string)
    {
        System.out.println("=== " + name + " ===");
        System.out.println(string);
    }
    
    private void heavyJob(String msg)
    {
        System.out.println(msg);
        for (int i = 0; i < 5; i++)
        {
            try
            {
                Thread.sleep(1000);
            }
            catch (InterruptedException e)
            {
            }
            System.out.print(".");
        }
    }
}

class PrinterProxy implements Printable
{
    private String name;
    
    private Printer real;
    
    public PrinterProxy()
    {
    }
    
    public PrinterProxy(String name)
    {
        this.name = name;
    }
    
    public synchronized void setPrinterName(String name)
    {
        if (real != null)
        {
            real.setPrinterName(name);
        }
        this.name = name;
    }
    
    public String getPrinterName()
    {
        return name;
    }
    
    public void print(String string)
    {
        realize();
        real.print(string);
    }
    
    private synchronized void realize()
    {
        if (real == null)
        {
            real = new Printer(name);
        }
    }
}
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    代理模式 Proxy Pattern

    ### 代理模式 Proxy Pattern #### 概念定义 代理模式是一种结构型设计模式,它允许程序员为某对象创建一个代理对象来控制对该对象的访问。简单来说,就是在不修改原始类的基础上,通过引入代理对象来扩展类的行为...

    Java24种设计模式,Java24种设计模式,24种设计模式,学会了这24种设计模式,可以打遍天下无敌手,设计模式非常重要

    2、代理模式PROXY PATTERN 3、单例模式SINGLETON PATTERN 4、多例模式MULTITION PATTERN 5、工厂方法模式FACTORY METHOD PATTERN 6、抽象工厂模式ABSTRACT FACTORY PATTERN 7、门面模式FACADE PATTERN 8、适配器...

    Proxy Pattern 代理模式

    Proxy Pattern 代理模式 采用JAVA实现,可以下载看看。

    Android设计模式之代理模式(Proxy Pattern)

    代理模式是设计模式的一种,它的主要目的是在不改变原有对象的基础上,为一个对象提供额外的功能或者控制对这个对象的访问。在Android开发中,代理模式的应用尤为常见,尤其在处理复杂的业务逻辑、网络请求、界面...

    java 设计模式之代理模式(Proxy Pattern)实现代码及设计详解:动态代理模式、静态代理模式

    在这些模式中,代理模式(Proxy Pattern)是一种常用的结构型设计模式,它允许我们为一个对象创建一个代理,该代理对象在客户端和目标对象之间起到中介的作用,可以增加额外的功能或控制访问。 代理模式分为两种...

    设计模式 之 “代理模式[Proxy Pattern]”

    **代理模式(Proxy Pattern)**是软件设计模式中的结构型模式之一,它在对象访问控制、增加额外功能或在客户端与目标对象之间提供一个中介等方面有广泛的应用。在代理模式中,代理类作为真实对象的代表,它持有真实...

    设计模式之代理模式proxy

    **设计模式之代理模式(Proxy Pattern)** 设计模式是软件工程中的一种最佳实践,它是在特定情境下解决常见问题的模板。代理模式是其中一种行为设计模式,它的核心思想是为一个对象提供一个替身或者代理,以控制对...

    代理模式(Proxy Pattern)完整示例代码

    代理模式是一种设计模式,它允许我们为一个对象创建一个代理对象,这个代理对象可以在原对象进行某些操作之前或之后添加额外的功能。代理模式的核心在于,它提供了一种方式来间接访问或控制目标对象,增加了系统的...

    c++-设计模式之代理模式(Proxy)

    代理模式(Proxy Pattern)是一种结构型设计模式,用于为其他对象提供一种代理以控制对这个对象的访问。代理模式通常用于保护、延迟加载、记录请求等场景,可以在不改变原有对象的情况下为其增加新的功能。 代理...

    C#版 24种设计模式

    备忘录模式(Memento Pattern) 策略模式(Strategy Pattern) 抽象工厂模式(Abstract Factory Pattern) 代理模式(Proxy Pattern) 单例模式(Singleton Pattern) 迭代器模式(Iterator Pattern) 访问者模式(Visitor ...

    设计模式专题,代理模式,工厂模式

    **代理模式(Proxy Pattern)** 代理模式的核心思想是在原始对象和客户端之间插入一个代理对象,这个代理对象在客户端和原始对象之间起到中介作用,可以控制或扩展对原始对象的访问。在Java中,代理模式主要有静态...

    C++设计模式课件15_Proxy_代理模式.pdf

    代理模式(Proxy Pattern)是一种结构型设计模式,它在客户端与目标对象之间提供了一个代理对象。这个代理对象能够控制对目标对象的访问,并且可以添加额外的功能或操作。简而言之,代理模式的核心在于提供一个代理...

    C#设计模式_设计模式_C#_

    代理模式(Proxy Pattern) 行为型: 13. 模板方法(Template Method) 14. 命令模式(Command Pattern) 15. 迭代器模式(Iterator Pattern) 16. 观察者模式(Observer Pattern) 17. 解释器模式(Interpreter Pattern) 18....

    用Java实现23种设计模式

    代理模式(Proxy Pattern) 3. 行为型模式 责任链模式(Chain of Responsibility Pattern) 命令模式(Command Pattern) 解释器模式(Interpreter Pattern) 迭代器模式(Iterator Pattern) 中介者模式...

    设计模式代理模式PPT学习教案.pptx

    代理模式(Proxy Pattern)是一种结构型设计模式,它提供了一个代理对象以控制对另外一个对象的访问。代理对象充当着中间人的角色,帮助客户端访问目标对象,并可以在访问过程中添加一些额外的操作。 知识点2:代理...

    设计模式PPT

     代理模式(Proxy Pattern) 行为型模式用来对类或对象怎样交互和怎样分配职责进行描述,主要包含以下11种设计模式:  责任链模式(Chain of Responsibility Pattern)  命令模式(Command Pattern)  解释...

    js策略模式和代理模式

    代理模式(Proxy Pattern)是一种结构设计模式,它为另一个对象提供一个代理或占位符以控制对这个对象的访问。代理模式中的代理对象和目标对象实现相同的接口,客户端与代理对象进行交互,代理对象则根据具体情况...

    设计模式代码——c#

    12. 代理模式(Proxy Pattern) 行为型 13. 模板方法(Template Method) 14. 命令模式(Command Pattern) 15. 迭代器模式(Iterator Pattern) 16. 观察者模式(Observer Pattern) 17. 解释器模式(Interpreter ...

Global site tag (gtag.js) - Google Analytics