java 代理模式,观察者模式
代理模式1
- import <a href="http://lib.csdn.net/base/17" class='replace_word' title="Java EE知识库" target='_blank' style='color:#df3434; font-weight:bold;'>Java</a>.lang.reflect.InvocationHandler;
- import java.lang.reflect.Method;
- import java.lang.reflect.Proxy;
- public class ProxyTest {
- public static void main(String[] args) {
- SaleComputer saleComputer = new ComputerMaker();
- InvocationHandler handler = new SaleProxy(saleComputer);
- SaleComputer proxy = (SaleComputer)Proxy.newProxyInstance(saleComputer.getClass().getClassLoader(), saleComputer.getClass().getInterfaces(), handler);
- proxy.saleComputer("花花");
- }
- }
- interface SaleComputer{ //卖电脑
- public void saleComputer(String type);
- }
- class ComputerMaker implements SaleComputer{
- public void saleComputer(String type) {
- System.out.println("卖出一台 " + type +" 牌电脑!");
- }
- }
- class SaleProxy implements InvocationHandler{
- Object delegate;
- public SaleProxy(Object delegate) {
- this.delegate = delegate;
- }
- public Object invoke(Object proxy, Method method, Object[] args)
- throws Throwable {
- giveMouse();
- return method.invoke(delegate,args);
- }
- private void giveMouse(){
- System.out.println("送鼠标...............");
- }
- }
代理模式2
- public class ProxyTest1 {
- public static void main(String[] args) {
- SaleComputer1 saleComputer = new ComputerMaker1();
- SaleComputer1 proxy = new SaleProxy1(saleComputer);
- proxy.saleComputer("鸿润");
- }
- }
- interface SaleComputer1{ //接口
- public void saleComputer(String type);
- }
- class ComputerMaker1 implements SaleComputer1{//实现类
- public void saleComputer(String type) {
- System.out.println("卖出一台 " + type +" 牌电脑!");
- }
- }
- class SaleProxy1 implements SaleComputer1{ //代理类
- SaleComputer1 delegate;
- public SaleProxy1(Object delegate){
- this.delegate = (SaleComputer1)delegate;
- }
- public void saleComputer(String type) {
- this.giveMouse();
- delegate.saleComputer(type);
- }
- private void giveMouse(){
- System.out.println("送鼠标...............");
- }
- }
观察者模式:
- package com.model;
- import java.util.Observable;
- import java.util.Observer;
- /**
- Java的API为我们提供了Observer接口和Observable类来实现所谓观察者模式。
- Observable(可观察者)类允许在自身发生改变时,通知其它对象(实现接口Observer,观察者)。
- */
- public class TestObserver{
- public static void main(String[] args){
- Produce produce = new Produce();
- NameObserver nameObserver = new NameObserver();
- PriceObserver priceObserver = new PriceObserver();
- produce.addObserver(nameObserver);
- produce.addObserver(priceObserver);
- produce.setName("Apple");
- produce.setPrice(100);
- }
- }
- //一个可观察者
- class Produce extends Observable{
- private String name;
- private Integer price;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- setChanged(); //设置变化点
- notifyObservers(name); //通知观察者
- }
- public Integer getPrice() {
- return price;
- }
- public void setPrice(Integer price) {
- this.price = price;
- setChanged();
- notifyObservers(price);
- }
- }
- //两个观察者
- class NameObserver implements Observer{
- public void update(Observable o, Object arg) {
- if(arg instanceof String){
- System.out.println("观察者观察到:产品名字已经改为: " + arg);
- }
- }
- }
- class PriceObserver implements Observer{
- public void update(Observable o, Object arg) {
- if(arg instanceof Integer){
- System.out.println("观察者观察到:价格已经改为: " + arg);
- }
- }
- }
java 代理模式,观察者模式的更多相关文章
- Java代理模式
java代理模式及动态代理类 1. 代理模式 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目 ...
- Java代理模式示例程序
Java代理模式示例程序 当然不是我想出来的,是我看的一个网上教程里的. 模拟的是一个对电脑公司的代理 真实类的接口: public interface SaleComputer { public S ...
- java 代理模式 总结
1.前言 最近舍友去面试遇到了关于java代理模式的问题. 我虽然知道怎么使用,但是没有做过正经的总结,因此有了这篇随笔,好好总结一下三大代理模式底层原理. 事实上,在开发项目的时候,基本用不上代理, ...
- 浅谈java代理模式
讲解java代理模式 目录 讲解java代理模式 何谓代理模式 静态代理 动态代理 JDK动态代理 CGLIB动态代理 何谓代理模式 代理模式,即Proxy Pattern,23种java常用设计模式 ...
- Java代理模式/静态代理/动态代理
代理模式:即Proxy Pattern,常用的设计模式之一.代理模式的主要作用是为其他对象提供一种代理以控制对这个对象的访问. 代理概念 :为某个对象提供一个代理,以控制对这个对象的访问. 代理类和委 ...
- JAVA代理模式与动态代理模式
1.代理模式 所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动.在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之前起到中介的作用.代理模式给某 ...
- java 代理模式一: 静态代理
代理模式: 代理模式的作用:为其他对象提供一种代理以控制对 特定对象 的访问. 某种情况下,一个客户不想或者直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用:通过代理对象引用. ...
- 18 java 代理模式 (转)
静态代理 1.新建一个接口,这个接口所提供的方法是关于数据库操作的 public interface EmployeeDao { public void updateSalary(); } 2.建一个 ...
- JAVA 代理模式(Proxy)
1.代理模式 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 代理模式一般涉 ...
随机推荐
- 数学图形(1.29) cochleoid曲线
它也算是一种螺线吧 相关软件参见:数学图形可视化工具,使用自己定义语法的脚本代码生成数学图形.该软件免费开源.QQ交流群: 367752815 #http://www.mathcurve.com/co ...
- leetcode mock interview-two sum II
package com.company; import java.util.LinkedList; import java.util.List; public class Main { public ...
- Node.js:Web模块、文件系统
一.web模块 Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,Web服务器的基本功能就是提供Web信息浏览服务.它只需支持HTTP协议.HTML文档格式及URL,与客户端的网络 ...
- 如何利用WebClient模拟登陆CSRF控制的网站
一般我们都是利用WebRequest这个类来向服务器进行数据的POST,不过很多情况下相应的服务器都有验证,看你是不是登陆,是不是来自同一个域,这些都简单,我们可以更改其属性来达到欺骗服务器.不过如果 ...
- 性能调优的Windows窗体DataGridView控件
性能调优的Windows窗体DataGridView控件 . 净框架4.5 在处理大量数据时, DataGridView 控制可以消耗大量的内存开销,除非你仔细地使用它. 在客户有限的内存,你 ...
- Html中的次方符号怎么写
代码: <p>1.01<sup>365</sup>=37.783,0.99<sup>365</sup>=0.025</p> 效果 ...
- 9款HTML5实现的超酷特效
之前我们推荐了8款HTML5实现的特效和应用,今天我们带来的这9款热门的HTML5特效同样会带给你全新的视角和体验. HTML5是HTML的升级版,HTML5有两大特点:首先,强化了 Web 网页的表 ...
- 嵌入式 如何定位死循环或高CPU使用率(linux)
如何定位死循环或高CPU使用率(linux) 确定是CPU过高 使用top观察是否存在CPU使用率过高现象 找出线程 对CPU使用率过高的进程的所有线程进行排序 ps H -e -o pid,tid ...
- 第一章:走近java-深入理解java虚拟机-读书总结
java技术体系: 1.java程序设计语言 2.硬件平台上的java虚拟机 3.class文件格式 4.java的API类库 5.第三方的类库 JDK: java语言,虚拟机,java API类库 ...
- Android + Eclipse + PhoneGap 3.4 安卓最新环境配置,部分资料整合网上资料,已成功安装.
前言:广州花都论坛,打算推出本地服务o2o应用.快速开发手机应用,phonegap 我的小站,http://www.w30.cn/ 如果有什么问题也可以到小组留言,可以的话,贡献一个ip:) phon ...