摘要:在软件系统中,有些对象有时候由于跨越网络或者其他的障碍,而不能够或者不想直接访问另一个对象,如果直接访问会给系统带来不必要的复杂性,这时候可以在客户程序和目标对象之间增加一层中间层,让代理对象来代替目标对象打点一切。这就是我们今天要讲的代理.

故事情节:

前段时间和TT矛盾很大,很难受,但仍然会不时的想起她,想知道她的生活情况,但如果直接和她打电话,她可能不会接,而且会影响她的心情。找她同学问问(代理).....对,没错就是代理.好的,我们现在就开始..........

结构图

选看看程序结果吧:

代码实现:

//生活情况的抽象

Code
 1
 2//生活情况的抽象
 3public interface LifeCircs
 4{
 5    //是否吃饭
 6    string IsEatFood();
 7    //身体是否好
 8    string IsHealth();
 9    //心情是否好
10    string IsGoodTemper(string weather);
11    //是否有想LG
12    string IsMissingLG();
13}

//TT的生活情况

Code
 1//TT的生活情况
 2public class TT:LifeCircs
 3{
 4    //是否吃饭
 5    public string IsEatFood()
 6    {
 7        return "吃了莲藕,木耳,西红市,黄瓜!";
 8    }
 9    
10    //身体是否好
11    public string IsHealth()
12    {
13        return "皮肤过敏了!";
14    }
15    
16    //心情是否好
17    public string IsGoodTemper(string weather)
18    {
19        if(weather=="fine")
20        {
21            return "心情非常的好!";
22        }
23        return string.Empty;
24    }
25    
26    //是否有想LG
27    public string IsMissingLG()
28    {
29      return "没有,忘了!";
30    }
31}

//TT同学

Code
 1//TT的同学
 2public class TTClassmate:LifeCircs
 3{
 4    //TT和同学住一起。(组合)
 5    TT tt=new TT();
 6    
 7    //是否吃饭
 8    public string IsEatFood()
 9    {
10        return tt.IsEatFood();
11    }
12    
13    //身体是否好
14    public string IsHealth()
15    {
16        return tt.IsHealth();
17    }
18    
19    //心情是否好
20    public string IsGoodTemper(string weather)
21    {
22        return tt.IsGoodTemper(weather);
23    }
24    
25    //是否有想LG
26    public string IsMissingLG()
27    {
28      return tt.IsMissingLG();
29    }
30}

//LG开始找代理问情况了

Code
//LG
public class LG
{
    public static void Main()
    {
        //想TT了,怎么办呢,找她,不行,她肯定会不开心的,找她同学吧!好的.
        
        TTClassmate ttClassmate=new TTClassmate();
    
        //她今天吃饭了吗
        string eatFoodResult=ttClassmate.IsEatFood();
        
        //她身体没有不舒服吧
        string healthResult=ttClassmate.IsHealth();
        
        //她今天心情好吧
        string temperResult=ttClassmate.IsGoodTemper("fine");
        
        //她有想过
        string missingResult=ttClassmate.IsMissingLG();
        
        
        Console.WriteLine("LG问:她今天吃饭了吗?");
        Console.WriteLine();
        Console.ForegroundColor=System.ConsoleColor.Cyan;
        Console.WriteLine("TT同学答:{0}",eatFoodResult);
        Console.ResetColor();
        Console.WriteLine();
        
        Console.WriteLine("LG问:她身体没有不舒服吧?");
        Console.WriteLine();
        Console.ForegroundColor=System.ConsoleColor.Cyan;
        Console.WriteLine("TT同学答:{0}",healthResult);
        Console.ResetColor();
        Console.WriteLine();
        
        Console.WriteLine("LG问:她今天心情好吧?");
        Console.WriteLine();
        Console.ForegroundColor=System.ConsoleColor.Cyan;
        Console.WriteLine("TT同学答:{0}",temperResult);
        Console.ResetColor();
        Console.WriteLine();
        
        Console.WriteLine("LG问:她有想过?");
        Console.WriteLine();
        Console.ForegroundColor=System.ConsoleColor.Cyan;
        Console.WriteLine("TT同学答:{0}",missingResult);
        Console.ResetColor();
        Console.WriteLine();
        
        Console.WriteLine("谢谢你哈!");
        Console.WriteLine();
        Console.WriteLine("刚才听到她说TT皮肤过敏了,真难受,飞回去?");
        Console.WriteLine("她都不会想LG了,怎么办?");
        Console.ReadKey();
    }
    
}

今天到此为止,有不清楚的地方望大家指出!

作者:Louja
出处:http://louja.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此声明,且在文章页面给出原文连接,否则保留追究法律责任的权利。

转载于:https://www.cnblogs.com/louja/archive/2008/09/08/1286579.html

TT和LG编程设计模式之代理相关推荐

  1. Android中的设计模式之代理模式

    参考 <设计模式:可复用面向对象软件的基础 >4.7 Proxy 代理--对象结构型模式 <Android源码设计模式解析与实战>第18章 编程好帮手--代理模式 意图 为其它 ...

  2. MyBatis运行原理(三)接口式编程及创建代理对象原理分析

    一.面向接口开发步骤 定义代理接口,将操作数据库的方法定义在代理接口中. 在SQL 映射文件中编写SQL 语句. 将SQL 映射文件注册在MyBatis 的全局配置文件中. 编写测试代码. 二.环境准 ...

  3. 【游戏编程扯淡精粹】游戏编程设计模式

    [游戏编程扯淡精粹]游戏编程设计模式 本文最初写于2018/9/4 毛星云 RIP 如何练习设计模式 基本盘:长期维护一个大型工程,持续积累 维护一个设计模式表格,日常查找使用 多学几门编程语言和编程 ...

  4. 23种设计模式7_代理模式之一静态代理

    23种设计模式7_代理模式之一静态代理 1 基本介绍 代理模式:为其他对象提供一种代理以控制对这个对象的访问 代理模式也叫委托模式,它是一项基本设计技巧.许多其他的模式,如状态模式.策略模式.访问者模 ...

  5. Spring系列(四)、设计模式之代理模式

    4 代理模式 代理模式是java中常用的设计模式,代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤信息.把消息转发给委托类.以及事后处理信息等.代理类与委托类之间通常会存在关联关系, ...

  6. win32 bios 类 对象编辑器 拒绝访问_面向对象的可复用设计模式之代理模式(13/24)...

    代理模式(Proxy pattern)就是给某一个对象提供一个代理,并由代理对象控制对原对象的引用.在一些情况下,一个客户不想或者不能直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作 ...

  7. 《C嵌入式编程设计模式》读书笔记

    <C嵌入式编程设计模式> 第一章 什么是嵌入式编程 嵌入式系统的基本知识 面向对象编程与结构化编程 使用C语言实现类.继承.状态机 第二章 嵌入式实时过程Harmony的嵌入式编程 嵌入式 ...

  8. 【设计模式】代理模式 ( 动态代理 | 模拟 Java 虚拟机生成对应的 代理对象 类 )

    文章目录 前言 一.模拟 JVM 生成对应的 代理对象 二.模拟 JVM 生成对应的 代理对象 完整流程展示 1.目标对象接口 2.被代理对象 3.调用处理程序 4.模拟 JVM 生成的代理对象类 5 ...

  9. C++设计模式之代理模式

    这篇文章主要介绍了C++设计模式之代理模式,本文讲解了什么是代理模式.代理模式的使用场合.代理模式的实现代码等内容,需要的朋友可以参考下 前言 青春总是那样,逝去了才开始回味:大学生活也是在不经意间就 ...

最新文章

  1. Mysql 查看、创建、更改 数据库和表
  2. 85.路由器和电脑的设置
  3. Pytho-SyntaxError: Non-ASCII character '\xe7' in file解决方法
  4. Google Dremel 原理 - 如何能3秒分析1PB
  5. 算法:两个数的和等于指定值1. Two Sum
  6. 搭积木php编程,Primo Toys,一款可以同时搭积木与编程的玩具
  7. matlab显示和输出语句,matlab输出语句是什么,
  8. coreldraw x5 选择工具快捷键_coreldraw x5快捷键大全 coreldraw快捷键分享
  9. HpSocket源码使用
  10. 行梯形矩阵最简行阶梯矩阵
  11. 股票多空量化策略通过合理释放beta收益一定程度上提升了组合的收益风险比?
  12. 商用字体网站,再也不用怕侵权
  13. 谈微软 KMS 激活
  14. Linux驱动编写入门-新解
  15. red hat 系统下载
  16. 视频画面裁剪怎么弄?分享几个实用技巧
  17. python:文件读取和存储
  18. 前端加密中文,后端解密java
  19. 苹果手机投影_iPhone 11竟然升级成了浴霸,看来智能手机的未来要靠它了!
  20. Linux-USB驱动笔记(五)--主机控制器驱动框架

热门文章

  1. CentOS 7中iptables服务暂停启动和保存备份
  2. DOS常用网络相关命令
  3. linux下面使用cpdf合并pdf
  4. 分區策略與數據傾斜處理策略的區別
  5. createTemporaryView is deprecated
  6. superset可视化-country map
  7. SyntaxError: (hbase):100: syntax error, unexpected tIDENTIFIER
  8. kafka的使用场景(转载+自己笔记)
  9. ubuntu19.10的xfce4中的Default-xhdpi主题失去了光滑效果
  10. torchvision中Transform的normalize