代理模式分为静态代理和动态代理
下面我分别举例静态代理和动态代理的实例以及如何使用代理模式实现AOP的功能
静态代理模式
package com.fruitking.designparten.proxy.sproxy;
public interface Idea {
/**
* 表白
* @param condition
* @return
*/
public String tell(String condition);
/**
* 寄送礼品
* @param gift
* @return
*/
public String delivery(String gift);
}
package com.fruitking.designparten.proxy.sproxy;
public class HeroImpl implements Idea {
public String tell(String condition) {
System.out.println("××,我喜欢你,做我女朋友吧!");
String returnOfGirl = "";
if("有房".equals(condition)){
returnOfGirl = "可以";
}else if("月薪1万以上".equals(condition)){
returnOfGirl = "可以";
}else if("长得帅".equals(condition)){
returnOfGirl = "可以";
}else{
returnOfGirl = "去死吧,我怎么可能喜欢你呢,下辈子吧";
}
return returnOfGirl;
}
public String delivery(String gift){
System.out.println("××,送给你的情人节礼物!");
String returnOfGirl = "";
if("奔驰轿车".equals(gift)){
returnOfGirl = "亲爱的,我非常爱你";
}else if("大钻戒".equals(gift)){
returnOfGirl = "亲爱的,我很爱你";
}else if("铂金项链".equals(gift)){
returnOfGirl = "亲爱的,我爱你";
}else if("毛绒娃娃".equals(gift)){
returnOfGirl = "亲爱的,谢谢啦";
}else{
returnOfGirl = "谢谢啦,我要回家了,再见";
}
return returnOfGirl;
}
}
package com.fruitking.designparten.proxy.sproxy;
public class HeroProxy implements Idea {
private Idea hero;
public HeroProxy(Idea obj){
this.hero = obj;
}
public String tell(String condition) {
System.out.println("代理人(女孩室友)去帮男主角转达/递送");
String result =hero.tell(condition);
System.out.println("代理人(女孩室友)已经帮男主角转达/递送");
return result;
}
public String delivery(String gift){
System.out.println("代理人(女孩室友)去帮男主角转达/递送");
String result =hero.delivery(gift);
System.out.println("代理人(女孩室友)已经帮男主角转达/递送");
return result;
}
}
package com.fruitking.designparten.proxy.sproxy;
public class Test {
public static void main(String[] args) {
Idea heroImpl = new HeroImpl();
HeroProxy heroProxy = new HeroProxy(heroImpl);
String result = heroProxy.tell("没有房子,月薪没有一万,长得不帅");
System.out.println(result);
System.out.println("-------------------------");
result = heroProxy.tell("有房");
System.out.println(result);
System.out.println("-------------------------");
result = heroProxy.delivery("大钻戒");
System.out.println(result);
System.out.println("-------------------------");
result = heroProxy.delivery("爆米花");
System.out.println(result);
}
}
分享到:
相关推荐
"革命加恋爱"模式虽然在后来的文学批评中未受重视,但它作为潜在的创作原型,持续影响着中国革命文学的发展,如《青春之歌》、《我们夫妇之间》和《红豆》等作品,都是这一模式的延续和演变。这一模式的存在和影响力...
设计模式作为软件工程领域的重要组成部分,旨在解决软件开发过程中遇到的常见问题。C++作为一种广泛应用的面向对象编程语言,掌握其设计模式对于提高编程效率、增强软件可维护性和扩展性具有重要意义。接下来,我们...
在IT领域,特别是软件开发行业中,设计模式是程序员必须掌握的核心知识之一。设计模式是一种在特定情境下解决常见问题的可重用解决方案,它能够帮助开发者编写出更灵活、更可维护的代码。《Java23种设计模式与追MM》...
恋爱话术小程序的设计 土味情话小程序的设计 恋爱导师小程序的设计 小程序开发工具推荐 小程序开发教程 小程序流量主盈利模式 小程序多种流量主模式的实现 小程序广告投放策略 小程序用户获取方法
恋爱话术小程序源码是一款专为用户提供恋爱技巧和交流策略的应用程序源代码,它结合了“土味情话”和“恋爱导师”的概念,旨在帮助用户在情感交往中找到合适的话语和方法。这款源码的独特之处在于其支持多种流量主...
10. **教学模式**:通过教程、指南或者游戏化学习,使用户在轻松愉快的氛围中掌握恋爱技巧。 在【mengwei_speechcraft_sd】这个压缩包中,可能包含了应用程序的资源文件、数据库、图片、音频和代码文件等,用于构建...
博弈论中的关键概念,如纳什均衡、囚徒困境等,都可以被巧妙地应用于解释恋爱中的决策过程。 项目中的核心文件包括: 1. **App.config**:这是.NET应用程序的配置文件,用于存储应用程序运行时的配置信息,例如...
大家好今天给大家带来一款微信版本的恋爱小助手小程序源码 该源码由多种功能组合而成 目前已拥有的功能为 恋爱信封表白制作生成(内涵N种文案) 头像转漫画制作 土味情话 舔狗语录 渣女语录 暖男情话 等等...
【恋爱倒计时网页源码】是一个用于表达情感和互动的网页应用,用户可以自定义内容,向心爱的人传达特别的信息。这个源码主要基于HTML、CSS和JavaScript技术构建,其中可能还涉及PHP用于处理用户交互和评论功能。下面...
通过这些产生式,恋爱产生式系统可以学习和模仿人类在恋爱中的行为,为虚拟环境或机器人提供更人性化、情感化的互动体验。尽管目前的技术仍处在初级阶段,但随着人工智能的发展,恋爱产生式系统有可能在未来帮助我们...
然而,通过成本收益分析,我们可以帮助大学生们更加理性地认识恋爱,引导他们正确对待恋爱中的付出与回报,从而在感情投入和学业、生活之间找到平衡点。这不仅有助于避免恋爱过程中可能出现的不必要的挫折与打击,...
1. **工作与生活平衡**:程序员的工作时间常常不规律,加班是常态,这可能导致他们在恋爱中难以找到合适的时间陪伴另一半,如何平衡工作与生活,是他们面临的一大挑战。 2. **沟通方式**:程序员通常善于逻辑分析,...
恋爱话术小程序源码-土味情话,恋爱导师支持多种流量主模式.txt
在“谈恋爱模型_增强学习_数学建模_”这个主题中,我们主要探讨的是如何运用数学建模的方法来模拟人类的恋爱过程,并结合增强学习的理论来加深对这一复杂社交现象的理解,以此激发学生对数学的兴趣。下面我们将详细...
2. **优化改进**:对于有经验的开发者,可以借鉴其中的设计模式,或者对现有功能进行优化和扩展。 3. **创新应用**:此源码可以作为基础,进行二次开发,例如加入AI算法,实现更智能的话术推荐。 在学习源码时,...
4. 恋爱观念的现实困境:青年群体在恋爱中也面临着多重困难,如工作忙碌、经济压力、生活圈子局限等问题。这些问题导致一部分青年难以找到合适的恋爱对象,甚至出现了“不知道如何与异性相处”的现象。 5. 家庭催婚...