阿龙的学习笔记---设计模式---代理模式,适配器模式

代理模式:

总结自:http://c.biancheng.net/view/1359.html

概述

  • 在有些情况下,一个客户不能或者不想直接访问另一个对象,这时需要找一个中介帮忙完成某项任务,这个中介就是代理对象。

优缺点

  • 代理模式的主要优点有:

    • 代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用;
    • 代理对象可以扩展目标对象的功能;
    • 代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度,增加了程序的可扩展性
  • 其主要缺点是:

    • 代理模式会造成系统设计中类的数量增加
    • 在客户端和目标对象之间增加一个代理对象,会造成请求处理速度变慢;
    • 增加了系统的复杂度;

结构:

  • 代理模式的主要角色如下。
    • 抽象主题(Subject)类:通过接口或抽象类声明真实主题和代理对象实现的业务方法。
    • 真实主题(Real Subject)类:实现了抽象主题中的具体业务,是代理对象所代表的真实对象,是最终要引用的对象。
    • 代理(Proxy)类:提供了与真实主题相同的接口(继承抽象类),其内部含有对真实主题的引用,它可以访问、控制或扩展真实主题的功能。
    • 这个图还是能看懂一些的。
      在这里插入图片描述

代码示例(Java):

  • 可见抽象类Subject,定义了Request,C++中可以声明为纯虚函数。
  • 真实主题继承了这个抽象类,是重要的对象,实现了Request()。
  • 而代理类,同样继承了这个抽象类,同时还包含一个private的真实主题类的成员,实现Request中可以添加一些操作,最终内部核心还是调用了RealSubject的函数。
    void main(String[] args) {
        Proxy proxy = new Proxy();
        proxy.Request();
    }
    
    //抽象主题
    interface Subject {
        void Request();
    }
    //真实主题
    class RealSubject implements Subject {
        public void Request() {
            System.out.println("访问真实主题方法...");
        }
    }
    //代理
    class Proxy implements Subject {
        private RealSubject realSubject;
    
        public void Request() {
            if (realSubject == null) {
                realSubject = new RealSubject();
            }
            preRequest();
            realSubject.Request();
            postRequest();
        }
    
        public void preRequest() {
            System.out.println("访问真实主题之前的预处理。");
        }
    
        public void postRequest() {
            System.out.println("访问真实主题之后的后续处理。");
        }
    }
    

适配器模式:

  • 代理模式是为其他类提供一种代理以控制对这个类的访问。我们不直接去接触目标类,而是直接操作代理类,代理类再去操作目标类。因为不直接接触目标类,因此我们可以在代理类的同名方法中添加或删除功能模块,而不用去修改目标类的原方法。

  • 而适配器模式则主要是协调现实与需求的差异,减少对已有代码的改动,适配不同的接口、类类型。项目实施中可能会出现这样的情况:当前已完成的项目的某一个包内的各个类实现了一些特定的接口,而客户提出了新的需求,要求实现他所指定的那些接口(抛弃原有的方法或接口),但其业务细节却是相同、完全一样的。

  • 最近在看STL才想起来之前写过代理模式,所以来补充适配器模式。C++ STL中的stack,queue就是以deque双端队列为基础,进行了封装实现栈和队列的功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
辽B代驾管理系统对代驾订单管理、用户咨询管理、代驾订单评价管理、代驾订单投诉管理、字典管理、论坛管理、公告管理、新闻信息管理、司机管理、用户管理、管理员管理等进行集中化处理。经过前面自己查阅的网络知识,加上自己在学校课堂上学习的知识,决定开发系统选择小程序模式这种高效率的模式完成系统功能开发。这种模式让操作员基于浏览器的方式进行网站访问,采用的主流的Java语言这种面向对象的语言进行辽B代驾管理系统程序的开发,在数据库的选择上面,选择功能强大的Mysql数据库进行数据的存放操作。辽B代驾管理系统的开发让用户查看代驾订单信息变得容易,让管理员高效管理代驾订单信息。 辽B代驾管理系统具有管理员角色,用户角色,这几个操作权限。 辽B代驾管理系统针对管理员设置的功能有:添加并管理各种类型信息,管理用户账户信息,管理代驾订单信息,管理公告信息等内容。 辽B代驾管理系统针对用户设置的功能有:查看并修改个人信息,查看代驾订单信息,查看公告信息等内容。 辽B代驾管理系统针对管理员设置的功能有:添加并管理各种类型信息,管理用户账户信息,管理代驾订单信息,管理公告信息等内容。 辽B代驾管理系统针对用户设置的功能有:查看并修改个人信息,查看代驾订单信息,查看公告信息等内容。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。项目管理页面提供的功能操作有:查看代驾订单,删除代驾订单操作,新增代驾订单操作,修改代驾订单操作。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。新闻管理页面,此页面提供给管理员的功能有:新增新闻,修改新闻,删除新闻。新闻类型管理页面,此页面提供给管理员的功能有:新增新闻类型,修改新闻类型,删除新闻类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值