代理者模式----设计模式系列

<pre code_snippet_id="1580901" snippet_file_name="blog_20160217_1_7167142" name="code" class="java">代码注释很清晰就不罗嗦了



public interface iGiveGift {

	void GiveFlowers();
	void GiveShoes();

}
<pre name="code" class="java">/**
 * 真正的追求者
 */
public class Pursuit implements iGiveGift {
    private SchoolGirl mm;

    public Pursuit(SchoolGirl mm) {
        this.mm = mm;
    }

    @Overridepublic
    void GiveFlowers() {
        System.out.println(mm.getName() + "送花");
    }

    @Overridepublic
    void GiveShoes() {
        System.out.println(mm.getName() + "送鞋");
    }
}

/**
 *
 * 代理者
 */
public class Proxy implements iGiveGift {

	Pursuit mPursuit;

	public Proxy(SchoolGirl schoolGirl) {
		this.mPursuit = new Pursuit(schoolGirl);
	}

	@Override
	public void GiveFlowers() {
		mPursuit.GiveFlowers();
	}

	@Override
	public void GiveShoes() {
		mPursuit.GiveShoes();
	}

}
</pre><pre>

/**被追求者*/
public class SchoolGirl {

	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}
/**
 * 为别人做嫁妆----代理者模式 <br/>
 * 代理模式,为其他对象提供一种代理以控制对这个对象的访问。
 */
public class Test {

	public static void main(String[] args) {

		SchoolGirl mSchoolGirl = new SchoolGirl();
		mSchoolGirl.setName("狗剩子");

		Proxy mProxy = new Proxy(mSchoolGirl);
		// 看似调用Proxy的GiveFlowers方法
		// 其实在Proxy的GiveFlowers的方法里调用的还是Persuit的GiveFlowers方法
		// 好处:在Test类里隐藏了Persuit类
		mProxy.GiveFlowers();
		mProxy.GiveShoes();

	}

}
				
时间: 2024-10-03 03:32:13

代理者模式----设计模式系列的相关文章

工厂模式----设计模式系列

本文采用了三种工厂模式 简单工厂模式 工厂方法模式 应用反射实现工厂模式 存放说明如下: com.dyk : 包含main方法的测试类 com.dyk.factory : 三种工厂类(具体工厂类的接口或者具体的工厂类) com.dyk.factory.impl : 工厂类的具体实现 com.dyk.operate :  具体运算类的父类 com.dyk.operate.impl : 具体的运算类 一.简单工厂模式      这里需要用到五个类,分别是:OperationFactory.Opera

模板方法模式----设计模式系列

模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定的步骤.          定义有些呆板,说说我的理解吧.父类定义实施的步骤,子类中实现具体的算法.当我们要完成在某一细节层次一直得一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,通常考虑用模板方法木事来处理. 代码很简单的不要不要的,还有注释.直接贴啦. (1)定义抽象模板父类 /** * 抽象模板,定义并实现了一个模板方法.这个模板方法一般

Android设计模式系列之工厂方法模式_Android

工厂方法模式,往往是设计模式初学者入门的模式,的确,有人称之为最为典型最具启发效果的模式. android中用到了太多的工厂类,其中有用工厂方法模式的,当然也有很多工厂并不是使用工厂方法模式的,只是工具管理类. 今天以ThreadFactory举例说明一下简单工厂模式和工厂方法模式. 工厂方法模式,Factory Method,简单的方式,不简单的应用. 1.意图 定义一个用于创建对象的接口,让子类决定实例化哪个类.工厂方式模式使一个类的实例化延迟到其子类. 热门词汇:虚构造器 延迟 创建对象

Android设计模式系列之组合模式_Android

Android中对组合模式的应用,可谓是泛滥成粥,随处可见,那就是View和ViewGroup类的使用.在android UI设计,几乎所有的widget和布局类都依靠这两个类. 组合模式,Composite Pattern,是一个非常巧妙的模式.几乎所有的面向对象系统都应用到了组合模式. 1.意图 将对象View和ViewGroup组合成树形结构以表示"部分-整体"的层次结构(View可以做为ViewGroup的一部分). 组合模式使得用户对单个对象View和组合对象ViewGrou

云计算设计模式(二十)——调度程序代理管理者模式

云计算设计模式(二十)--调度程序代理管理者模式 协调一系列在分布式服务集和其他远程资源的的行为,试图透明地处理故障,如果这些操作失败,或撤销,如果系统不能从故障中恢复执行工作的影响.这种模式可以分布式系统中增加弹性和灵活性,使之恢复和重试失败是由于短暂的异常,持久的故障和处理故障等操作. 背景和问题 应用程序执行其包括多个步骤,其中的一些可以调用远程服务或访问远程资源的任务.各个步骤可以是相互独立的,但它们是由实现该任务的应用程序逻辑编排. 只要有可能,应用程序应该确保任务运行完成和解决远程访

PHP 设计模式系列之 specification规格模式_php实例

1.模式定义 规格模式是组合模式的一种扩展,在框架性开发中使用较多(项目级开发很少使用),这里做一个简单的介绍. 规格模式(Specification)可以认为是组合模式的一种扩展.有时项目中某些条件决定了业务逻辑,这些条件就可以抽离出来以某种关系(与.或.非)进行组合,从而灵活地对业务逻辑进行定制.另外,在查询.过滤等应用场合中,通过预定义多个条件,然后使用这些条件的组合来处理查询或过滤,而不是使用逻辑判断语句来处理,可以简化整个实现逻辑. 这里的每个条件就是一个规格,多个规格/条件通过串联的

Android设计模式系列之组合模式

Android中对组合模式的应用,可谓是泛滥成粥,随处可见,那就是View和ViewGroup类的使用.在android UI设计,几乎所有的widget和布局类都依靠这两个类. 组合模式,Composite Pattern,是一个非常巧妙的模式.几乎所有的面向对象系统都应用到了组合模式. 1.意图 将对象View和ViewGroup组合成树形结构以表示"部分-整体"的层次结构(View可以做为ViewGroup的一部分). 组合模式使得用户对单个对象View和组合对象ViewGrou

大话设计模式系列

原文:大话设计模式系列 1.设计模式之前奏(UML类图) 2.设计模式之一(单例模式) 3.设计模式之二(简单工厂模式) 4.设计模式之三(工厂方法模式) 5.设计模式之四(抽象工厂模式第一回合) 6.设计模式之四(抽象工厂模式 第二回合) 7.设计模式之四(抽象工厂模式 第三回合) 8.设计模式原则(单一.开放封 闭.里氏代换.依赖倒转.迪米特法则五大原则) 9.设计模式之五(策略模式) 10.设计模式之六(装饰模式) 11.设计模式之七(代理模式) 12.设计模式之八(原型模式) 13.设计

Android设计模式系列之单例模式

单例模式,可以说是GOF的23种设计模式中最简单的一个. 这个模式相对于其他几个模式比较独立,它只负责控制自己的实例化数量单一(而不是考虑为用户产生什么样的实例),很有意思,是一个感觉上很干净的模式,本人很喜欢这个模式. android中很多地方都用到了单例模式,本文以输入法管理者InputMethodManager为例,展开分析. 单例模式,Singleton Pattern,能够以其特有的优势,替代系统中全局变量,应用非常广泛. 1.意图 保证一个类仅有一个实例,并提供一个访问它的全局访问点