java 接口(interface)和面向对象的详情 (代理模式)
发布日期:2021-06-30 15:37:27
浏览次数:2
分类:技术文章
本文共 2671 字,大约阅读时间需要 8 分钟。
package com.day30.test;
//服务器类的例子:
public class Test {
public static void main(String[] args) { System.out.println("接口的体现 代理模式"); //主要还是利用 接口和多态的设计 实现的 //声明的是真是Server Server server =new Server(); //把真是的Server扔进设计好的代理类中 利用了多态 ProxyServer proxyServer= new ProxyServer(server); // 利用面向对象多态形式 传入的是哪个对象 实际他调用的是哪个对象的方法 proxyServer.brwse(); //为什么不知道用Server 直接调用brwse //因为在调用这个服务器的方法 之前也许需要做别的事 // 比如 互联网之前的检测 等等 所以把这个声明的服务器类传入代理类 执行一些别的方法 // 然后顺带执行这个服务器的方法 // 为什么不直接在这个服务器器把这个 互联网之前的检测 的方法定义好 ? // 答: 扩展性强 // 比如现在又有一台服务器类 也需要做 互联网之前的检测 难道要在这个服务器类中再写一遍? // 所以说 可以把这些公共行为的方法 都可以写在一个类中 // 然后 哪个类想使用 就可以通过面向对象多态的形式 执行这个公共类中的方法 // 每针对一套的接口类 要设计一个代理类 // 这个是服务器操作一套代理类设计 // 如果现在有个买菜的接口定义 // 你不想直接去买 就可以根据买菜这一套 声明一个买菜的代理类 // 把你传入买菜代理类中 然后让这个代理类去执行 你想买菜的这个操作 也许买菜之前要有别的操作 // 比如 检测 金钱是否充足 }}
//网络
interface NetWork{ void brwse(); }//被代理类
class Server implements NetWork{@Override
public void brwse() { // TODO Auto-generated method stub System.out.println("真是的服务器访问网络"); } }//代理类
class ProxyServer implements NetWork{ private NetWork work; public ProxyServer(NetWork work) { this.work=work; } void check(){ System.out.println("互联网之前的校验"); }@Override
public void brwse() { // TODO Auto-generated method stub check(); work.brwse(); } }
package com.day30.test;
//经纪人和明星的例子:
// 练习以下接口和多态的形式 public class StaticProxy { public static void main(String[] args) { Proxy proxy=new Proxy(new Actor()); proxy.confer(); proxy.signContract(); proxy.bookTick(); proxy.sing(); proxy.takeMoney(); } }//声明一个接口
//明星要做的事情 interface Star{ void confer(); //面谈 void signContract(); //签合同 void bookTick(); //订票 void sing(); //唱歌 void takeMoney(); //收钱 }class Actor implements Star{
@Override
public void confer() { // TODO Auto-generated method stub }@Override
public void signContract() { // TODO Auto-generated method stub }@Override
public void bookTick() { // TODO Auto-generated method stub }@Override
public void sing() { // TODO Auto-generated method stub System.out.println("明星自己唱歌!!!"); }@Override
public void takeMoney() { // TODO Auto-generated method stub } }class Proxy implements Star{
private Actor actor; public Proxy(Actor actor) { // TODO Auto-generated constructor stub this.actor=actor; }@Override
public void confer() { // TODO Auto-generated method stub System.out.println("经纪人面谈"); }@Override
public void signContract() { // TODO Auto-generated method stub System.out.println("经纪人签合同"); }@Override
public void bookTick() { // TODO Auto-generated method stub System.out.println("经纪人订票"); }@Override
public void sing() { // TODO Auto-generated method stub actor.sing(); }@Override
public void takeMoney() { // TODO Auto-generated method stub System.out.println("经纪人收钱"); } }转载地址:https://jsonll.blog.csdn.net/article/details/108458493 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月30日 18时27分29秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Collections排序sort排序list,单个及多条件排序
2019-05-01
Mysql中where 条件中加 if 判断-纯jdbc
2019-05-01
分布式数据中间件TDDL、Amoeba、Cobar、MyCAT架构比较
2019-05-01
Sharding-JDBC的SQL引擎(Druid)处理的支持情况总结
2019-05-01
大数据开发者应该知道的分布式系统 CAP 理论
2019-05-01
HBase在人工智能场景的使用
2019-05-01
Apache Spark 2.4 中解决复杂数据类型的内置函数和高阶函数介绍
2019-05-01
数据结构与算法?看这篇就够了!
2019-05-01
Apache Kafka:优化部署的 10 种最佳实践
2019-05-01
HBase 中加盐之后的表如何读取:Spark 篇
2019-05-01
一篇文章了解 Spark Shuffle 内存使用
2019-05-01
【免费下载】某平台3980元Hadoop大数据/机器学习全套视频,仅此1次
2019-05-01
Apache Hive 联邦查询(Query Federation)
2019-05-01
为什么说流处理即未来?
2019-05-01
Leetcode 剑指 Offer 39. 数组中出现次数超过一半的数字 c#
2019-05-01
Leetcode 35. 搜索插入位置 c#
2019-05-01
LeetCode64:最小路径和
2019-05-01
LeetCode931. 下降路径最小和
2019-05-01
LeetCode62. 不同路径
2019-05-01