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("经纪人收钱");
}
}java 接口(interface)和面向对象的详情 (代理模式)
原创
©著作权归作者所有:来自51CTO博客作者json____的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
面向对象和面向接口编程
面向过程和面向对象编程的区别
面向对象 面向过程 -
JAVA面向过程和面向对象区别面向过程 面向对象 封装 面向对象思想 多态性
-
Flink 高级配置发行版剖析、Scala 版本、Table 依赖与 Hadoop 集成实战
本文深入解析Flink发行版目录结构及依赖管理要点。核心内容包括:/lib与/opt目录分工,其中/lib存放核心运行时和默认加载模块,/opt存放可选依赖;Scala版本的二进制兼容性约束;Table API依赖的拆分架构;Planner与Planner Loader的选择策略;Hadoop依赖的正确处理方式。文章提供了工程实践清单,包含类路径治理、Table作业规范、Scala版本策略等具体建议,并列举常见问题排查方法。最后强调合理的配置管理是构建稳定Flink生产环境的基础,通过精细控制依赖关系可显著
#flink #scala #hadoop Scala flink
















