`
jsbylibo
  • 浏览: 11192 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

接口--工厂方法、代理模式

 
阅读更多

-------------工厂方法------------

概述:

    定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。

 

适用性:

1. 当一个类不知道它所必须创建的对象的类的时候

2. 当一个类希望由它的子类来指定它所创建的对象的时候 

3. 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候

 

举例:


 

package com.atguigu.java;
//工厂方法设计模式
public class TestFactoryMethod {
	public static void main(String[] args) {
		IWorkFactory i = new StudentWorkFactory();
		i.getWork().doWork();
		
		IWorkFactory i1 = new TeacherWorkFactory();
		i1.getWork().doWork();
	}
}

interface IWorkFactory{
	Work getWork();
}
class StudentWorkFactory implements IWorkFactory{

	@Override
	public Work getWork() {
		return new StudentWork();
	}
	
}
class TeacherWorkFactory implements IWorkFactory{

	@Override
	public Work getWork() {
		return new TeacherWork();
	}
	
}

interface Work{
	void doWork();
}
class StudentWork implements Work{

	@Override
	public void doWork() {
		System.out.println("学生写作业");
	}
	
}
class TeacherWork implements Work{

	@Override
	public void doWork() {
		System.out.println("老是批改作业");
	}
	
}

 

总结:

     FactoryMethod模式是设计模式中应用最为广泛的模式,在面向对象的编程中,对象的创建工作非常简单,对象的创建时机却很重要。FactoryMethod解决的就是这个问题,它通过面向对象的手法,将所要创建的具体对象的创建工作延迟到了子类,从而提供了一种扩展的策略,较好的解决了这种紧耦合的关系。

 

--------------代理模式-------------

概述:

    为其他对象提供一种代理以控制对这个对象的访问。 

举例: 

package com.atguigu.java;
//接口的应用:代理模式
public class TestProxy {
	public static void main(String[] args) {
		Object obj = new ProxyObject();
		obj.action();
	}
}

interface Object{
	void action();
}
//代理类
class ProxyObject implements Object{
	Object obj;
	
	public ProxyObject() {
		System.out.println("代理类创建成功");
		obj = new ObjectImpl();
	}

	@Override
	public void action() {
		System.out.println("====代理类开始====");
		obj.action();
		System.out.println("====代理类结束====");
	}
	
}
//被代理类
class ObjectImpl implements Object{

	@Override
	public void action() {
		System.out.println("----被代理类开始----");
		System.out.println("----具体操作----");
		System.out.println("----被代理类结束----");
	}
	
}

 

-----------接口总结-------------

通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系。

通过接口可以指明多个类需要实现的方法,一般用于定义对象的扩张功能。

接口主要用来定义规范。解除耦合关系。

 

  • 大小: 55.5 KB
  • 大小: 16 KB
分享到:
评论

相关推荐

    设计模式(JAVA语言实现)--20种设计模式附带源码PPT模板.pptx

    logo 1工厂模式:一个接口封装更多接口工厂模式:一个接口封装更多接口 设计模式(JAVA语言实现)--20种设计模式附带源码PPT模板全文共22页,当前为第2页。 2桥接模式:定义一个接口、两个类都实现该接口桥接模式:...

    design-pattern-java.pdf

    实现对象的复用——享元模式(二) 实现对象的复用——享元模式(三) 实现对象的复用——享元模式(四) 实现对象的复用——享元模式(五) 代理模式-Proxy Pattern 设计模式之代理模式(一) 设计模式之代理模式...

    设计模式--C++

    3.2 Builder(生成器)—对象创建型模式 633.3 Factory Method(工厂方法)—对象创建型模式 70 3.4 Prototype(原型)—对象创建型模式 87 3.5 Singleton(单件)—对象创建型模式 84 3.6 创建型模式的讨论 89 第 4...

    设计模式:创建型之原型(深浅拷贝)、单例(饿汉式与懒汉式),三大工厂模式 结构型之适配器模式,代理模式(三大代理)

    代理模式可以隐藏真是对象的实现细节,使客户端无需知晓真实对象的工作方式和结构。 通过代理类来间接访问真实类,可以在不修改真实类的情况下,对其进行扩展、优化或添加安全措施。 代理模式实现起来简单,易于...

    24种设计模式与6大设计原则

    代理模式[PROXY PATTERN] 单例模式[SINGLETON PATTERN] 多例模式[MULTITION PATTERN] 工厂方法模式[FACTORY METHOD PATTERN] 抽象工厂模式[ABSTRACT FACTORY PATTERN] 门面模式[FACADE PATTERN] 适配器模式[ADAPTER ...

    java设计模式

    12.3.1 代理模式的优点 12.3.2 代理模式的应用 12.4 代理模式的扩展 12.4.1 普通代理 12.4.2 强制代理 12.4.3 代理是有个性的 12.4.4 虚拟代理 12.4.5 动态代理 12.5 最佳实践 第13章 原型模式 13.1 个性化电子账单 ...

    Java23种设计模式详解,看这一个就够了

    Java设计模式共有23种,分别为:抽象工厂模式、建造模式、工厂方法模式、原型模式、单例模式、外观模式、适配器模式、桥接模式、组合模式、装饰模式、享元模式、代理模式、命令模式、解释器模式、访问者模式、迭代子...

    C#设计模式大全

    八、 代理模式实际应用的例子 设计模式(14)-Flyweight Pattern 一、 享元(Flyweight)模式 二、 单纯享元模式的结构 三、 单纯享元模式的示意性源代码 四、 复合享元模式的结构 五、 一个咖啡摊的例子 六...

    C#设计模式.PDF

    八、 代理模式实际应用的例子 119 设计模式(14)-Flyweight Pattern 122 一、 享元(Flyweight)模式 122 二、 单纯享元模式的结构 122 三、 单纯享元模式的示意性源代码 123 四、 复合享元模式的结构 125 五、 一...

    ActionScript 3.0设计模式扫描版_方红琴译

    第Ⅰ部分 无常的变化 第1章 面向对象程序设计、设计模式和ActionScript 3.0 ...对称代理模式使用的主要00P概念 游戏玩家接口 游戏裁判员 在互联网上共享的信息 游戏玩家一代理类 支撑类和文档文件 小结...

    何红辉关爱民-Android源码设计模式解析与实战(带书签第2版).pdf

    一步、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特原则、单例模式、Builder模式、原型模式、工厂方法模式、抽象工厂模式、策略模式、状态模式、责任链模式、解释器模式、命令模式、观察者模式、...

    OBJECTIVE-C编程之道 IOS设计模式解析电子书+源代码

    性能与对象访问第21章 享元21.1 何为享元模式21.2 何时使用享元模式21.3 创建百花池21.4 总结第22章 代理22.1 何为代理模式22.2 何时使用代理模式22.3 用虚拟代理懒加载图像22.4 在Cocoa Touch框架中使用代理模式...

    设计模式所有实验及实验报告及代码.zip

    18代理模式 19适配器模式 20桥接模式 21装饰模式 22外观模式 23享元模式 24组合模式 25行为型模式概述 26模板方法模式 27策略模式 28命令模式 29责任链模式 30状态模式 31观察者模式 32中介者模式 33迭代器模式 34...

    Android源码设计模式解析与实战

    优化代码的首步、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特原则、单例模式、Builder模式、原型模式、工厂方法模式、抽象工厂模式、策略模式、状态模式、责任链模式、解释器模式、命令模式、观察...

    设计模式:可复用面向对象软件的基础--详细书签版

    整个设计模式领域还很新,本书的四位作者也许已占据了这个领域造诣最深的专家中的半数,因而他们定义模式的方法可以作为后来者的榜样。如果要知道怎样恰当定义和描述设计模式,我们应该可以从他们那儿获得启发”--steve...

    何红辉关爱民-Android源码设计模式解析与实战(带书签高清第2版).pdf

    优化代码的第一步、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特原则、单例模式、Builder模式、原型模式、工厂方法模式、抽象工厂模式、策略模式、状态模式、责任链模式、解释器模式、命令模式、...

    《设计模式实训教程》【PPT+类图与代码+样章】

    4.2.7代理模式实例之日志记录代理 4.3实训练习 第5章行为型模式实训 5.1知识讲解 5.1.1行为型模式概述 5.1.2职责链模式 5.1.3命令模式 5.1.4解释器模式 5.1.5迭代器模式 5.1.6中介者模式 5.1.7备忘录模式...

    Android 源码设计模式解析与实战

    优化代码的第一步、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特原则、单例模式、Builder模式、原型模式、工厂方法模式、抽象工厂模式、策略模式、状态模式、责任链模式、解释器模式、命令模式、...

    尚硅谷设计模式源码笔记课件.zip

    单例模式的8种实现方式、工厂模式的3种实现方式、适配器模式的3种实现、代理模式的3种方式、深拷贝等 3) 如果你想写出规范、漂亮的程序,就花时间来学习下设计模式吧 课程内容和目标 本课程是使用Java来讲解...

Global site tag (gtag.js) - Google Analytics