-------------工厂方法------------
概述:
定义一个用于创建对象的接口,让子类决定实例化哪一个类。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("----被代理类结束----"); } }
-----------接口总结-------------
通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系。
通过接口可以指明多个类需要实现的方法,一般用于定义对象的扩张功能。
接口主要用来定义规范。解除耦合关系。
相关推荐
- **工厂方法模式(Factory Method)**:定义一个创建对象的接口,让子类决定实例化哪一个类。工厂方法让类的实例化推迟到子类。 - **抽象工厂模式(Abstract Factory)**:提供一个创建一系列相关或相互依赖对象的...
在工厂方法模式中,我们通常定义一个工厂接口或抽象类,然后由各个具体的工厂类实现这个接口或继承这个抽象类,以创建特定的产品对象。 源文件中可能包含以下关键知识点: 1. **模式定义**:工厂方法模式(Factory...
“设计模式之工厂方法模式”表明我们将讨论的是设计模式中的工厂方法,它是创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。通过工厂方法,我们可以避免在客户端代码中直接实例化具体产品,而是通过...
本篇文章将详细讲解代理模式、单例模式和工厂模式这三种设计模式,并通过Java代码实例进行演示。 1. **代理模式**: 代理模式是一种结构型设计模式,它为一个对象提供一个替身或代理,以控制对该对象的访问。代理...
代理模式和工厂模式是两种非常重要的设计模式,它们在Java编程中有着广泛的应用。 **代理模式(Proxy Pattern)** 代理模式的核心思想是在原始对象和客户端之间插入一个代理对象,这个代理对象在客户端和原始对象...
在编程领域,动态代理和工厂方法是两种非常重要的设计模式,它们在软件开发中起着至关重要的作用。这里我们将深入探讨这两种模式,并结合提供的文件名,即“005_Factory_Series_DesignPattern”和“006_Dynamic_...
本篇将深入探讨标题中提及的几种设计模式:Model-View-Controller(MVC)模式、单例模式、代理模式以及工厂模式,尤其是简单工厂模式。 **1. Model-View-Controller (MVC) 模式** MVC模式是一种架构模式,它将应用...
- 代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。 - 外观模式(Facade):提供一个统一的接口,用来访问子系统的一组接口。 - 适配器模式(Adapter):使两个接口不兼容的类能够协同工作。 ...
在“UML(4)-单例、简单工厂、责任链、代理模式的UML”中,我们将深入探讨这四种模式的UML表示方式,以及它们在实际开发中的应用。 首先,单例模式是一种确保一个类只有一个实例并提供全局访问点的设计模式。在UML中...
结构型模式包括适配器模式、装饰器模式、代理模式等,行为型模式如策略模式、模板方法模式、观察者模式等。 设计模式的六大原则是软件设计的核心指导思想: 1. 开闭原则:对扩展开放,对修改关闭,意味着增加新功能...
- 代理模式 - 适配器模式 2. 设计模式的基本要素: - 名字 - 意图 - 问题 - 解决方案 - 参与者与协作者 - 实现 - 一般性构造 3. 设计模式的应用场景: - 使用命令模式来参数化客户请求 - 使用策略模式...
例如,我们可以创建一个MathProxy类,它实现了Math接口,并在其中调用原始Math对象的方法。这样,MathProxy类就可以作为Math对象的代理,来扩展或修改Math对象的行为。 三、动态代理 动态代理是通过使用代理工厂或...
- 代理模式:为其他对象提供一种代理以控制对这个对象的访问。 3. 行为型设计模式: - 责任链模式:将请求沿着处理者链传递,直到被某个对象处理。 - 命令模式:将请求封装为一个对象,以便使用不同的请求、队列...
- **代理模式**: 提供一个代理对象来控制对目标对象的访问。 - **外观模式**: 为子系统中的一组接口提供一个一致的界面。 - **桥接模式**: 将抽象部分与它的实现部分分离,使它们都可以独立变化。 - **组合模式*...
在工厂方法模式中,我们创建对象时不直接实例化具体的产品类,而是通过一个接口或者抽象类来创建对象,这个接口或抽象类被称为工厂方法。这样做有两个主要好处:一是将对象的创建过程与使用对象的代码分离,二是允许...
**工厂方法模式**的核心在于定义一个创建对象的接口,但让实现这个接口的类决定实例化哪一个类。工厂方法让类的实例化推迟到子类中进行,这样就将类的实例化与具体的类解耦。这提高了代码的灵活性和可扩展性,当需要...
- 代理模式:为其他对象提供一种代理以控制对这个对象的访问。 - 组合模式:将对象组织成树形结构,可以同等地对待单个对象和对象集合。 - 装饰模式:动态地给一个对象添加一些额外的职责。 - 复用模式(享元...
工厂方法模式是创建型设计模式中的一种,它的目的是定义一个创建对象的接口,但让子类来决定实例化哪一个类。工厂方法模式将对象的实例化推迟到子类中进行,这样做可以使得创建过程更加灵活,符合“开闭原则”——对...
本项目涵盖了四种常见的设计模式:单例模式、工厂模式、动态代理和适配器模式。下面将详细阐述这四种设计模式的概念、作用以及在实际项目中的应用。 **1. 单例模式** 单例模式是一种限制类实例化次数为一个的设计...