TT和LG编程设计模式之代理
摘要:在软件系统中,有些对象有时候由于跨越网络或者其他的障碍,而不能够或者不想直接访问另一个对象,如果直接访问会给系统带来不必要的复杂性,这时候可以在客户程序和目标对象之间增加一层中间层,让代理对象来代替目标对象打点一切。这就是我们今天要讲的代理.
故事情节:
前段时间和TT矛盾很大,很难受,但仍然会不时的想起她,想知道她的生活情况,但如果直接和她打电话,她可能不会接,而且会影响她的心情。找她同学问问(代理).....对,没错就是代理.好的,我们现在就开始..........
结构图
选看看程序结果吧:
代码实现:
//生活情况的抽象
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的生活情况
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同学
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开始找代理问情况了
//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编程设计模式之代理相关推荐
- Android中的设计模式之代理模式
参考 <设计模式:可复用面向对象软件的基础 >4.7 Proxy 代理--对象结构型模式 <Android源码设计模式解析与实战>第18章 编程好帮手--代理模式 意图 为其它 ...
- MyBatis运行原理(三)接口式编程及创建代理对象原理分析
一.面向接口开发步骤 定义代理接口,将操作数据库的方法定义在代理接口中. 在SQL 映射文件中编写SQL 语句. 将SQL 映射文件注册在MyBatis 的全局配置文件中. 编写测试代码. 二.环境准 ...
- 【游戏编程扯淡精粹】游戏编程设计模式
[游戏编程扯淡精粹]游戏编程设计模式 本文最初写于2018/9/4 毛星云 RIP 如何练习设计模式 基本盘:长期维护一个大型工程,持续积累 维护一个设计模式表格,日常查找使用 多学几门编程语言和编程 ...
- 23种设计模式7_代理模式之一静态代理
23种设计模式7_代理模式之一静态代理 1 基本介绍 代理模式:为其他对象提供一种代理以控制对这个对象的访问 代理模式也叫委托模式,它是一项基本设计技巧.许多其他的模式,如状态模式.策略模式.访问者模 ...
- Spring系列(四)、设计模式之代理模式
4 代理模式 代理模式是java中常用的设计模式,代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤信息.把消息转发给委托类.以及事后处理信息等.代理类与委托类之间通常会存在关联关系, ...
- win32 bios 类 对象编辑器 拒绝访问_面向对象的可复用设计模式之代理模式(13/24)...
代理模式(Proxy pattern)就是给某一个对象提供一个代理,并由代理对象控制对原对象的引用.在一些情况下,一个客户不想或者不能直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作 ...
- 《C嵌入式编程设计模式》读书笔记
<C嵌入式编程设计模式> 第一章 什么是嵌入式编程 嵌入式系统的基本知识 面向对象编程与结构化编程 使用C语言实现类.继承.状态机 第二章 嵌入式实时过程Harmony的嵌入式编程 嵌入式 ...
- 【设计模式】代理模式 ( 动态代理 | 模拟 Java 虚拟机生成对应的 代理对象 类 )
文章目录 前言 一.模拟 JVM 生成对应的 代理对象 二.模拟 JVM 生成对应的 代理对象 完整流程展示 1.目标对象接口 2.被代理对象 3.调用处理程序 4.模拟 JVM 生成的代理对象类 5 ...
- C++设计模式之代理模式
这篇文章主要介绍了C++设计模式之代理模式,本文讲解了什么是代理模式.代理模式的使用场合.代理模式的实现代码等内容,需要的朋友可以参考下 前言 青春总是那样,逝去了才开始回味:大学生活也是在不经意间就 ...
最新文章
- Mysql 查看、创建、更改 数据库和表
- 85.路由器和电脑的设置
- Pytho-SyntaxError: Non-ASCII character '\xe7' in file解决方法
- Google Dremel 原理 - 如何能3秒分析1PB
- 算法:两个数的和等于指定值1. Two Sum
- 搭积木php编程,Primo Toys,一款可以同时搭积木与编程的玩具
- matlab显示和输出语句,matlab输出语句是什么,
- coreldraw x5 选择工具快捷键_coreldraw x5快捷键大全 coreldraw快捷键分享
- HpSocket源码使用
- 行梯形矩阵最简行阶梯矩阵
- 股票多空量化策略通过合理释放beta收益一定程度上提升了组合的收益风险比?
- 商用字体网站,再也不用怕侵权
- 谈微软 KMS 激活
- Linux驱动编写入门-新解
- red hat 系统下载
- 视频画面裁剪怎么弄?分享几个实用技巧
- python:文件读取和存储
- 前端加密中文,后端解密java
- 苹果手机投影_iPhone 11竟然升级成了浴霸,看来智能手机的未来要靠它了!
- Linux-USB驱动笔记(五)--主机控制器驱动框架
热门文章
- CentOS 7中iptables服务暂停启动和保存备份
- DOS常用网络相关命令
- linux下面使用cpdf合并pdf
- 分區策略與數據傾斜處理策略的區別
- createTemporaryView is deprecated
- superset可视化-country map
- SyntaxError: (hbase):100: syntax error, unexpected tIDENTIFIER
- kafka的使用场景(转载+自己笔记)
- ubuntu19.10的xfce4中的Default-xhdpi主题失去了光滑效果
- torchvision中Transform的normalize