`
abc778201
  • 浏览: 9177 次
  • 性别: Icon_minigender_1
  • 来自: 东莞
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

接口的使用——工厂方法设计模式

阅读更多
接口是实现多重继承的途径,而生成遵循某个接口的对象的典型方式就是工厂方法设计模式,这与直接调用构造器不同,我们在工厂对象(Factories)上调用的是创建方法,而该工厂对象将生成接口实现的对象(ServiceFactory  fact)。理论上,通过这种方式,我们的代码将完全与接口的实现分离,使得我们可以透明地将某个实现替换成另一个实现。
interface Service{
void method1();
void method2();
}

interface ServiceFactory{
Service getService();
}

class Implementation1 implements Service{
Implementation1() {}
public void method1(){ System.out.print("Implementation1 method1\n"); }
public void method2(){ System.out.print("Implementation1 method2\n"); }
}

class Implementation1Factory implements ServiceFactory{
public Service getService(){ return new Implementation1(); }
}

class Implementation2 implements Service{
Implementation2(){}
public void method1(){ System.out.print("Implementation2 method1\n"); }
public void method2(){ System.out.print("Implementation2 method2\n"); }
}

class Implementation2Factory implements ServiceFactory{
public Service getService(){ return new Implementation2(); }
}

public class Factories {
public static void serviceConsumer(ServiceFactory fact){
  Service s=fact.getService();
  s.method1();
  s.method2();
}
  public static void main(String[] args){
   serviceConsumer(new Implementation1Factory());
   serviceConsumer(new Implementation2Factory());
  }
}
分享到:
评论

相关推荐

    C#设计模式(3)——工厂方法模式.pdf

    工厂方法模式之所以可以解决简单工厂的模式,是因为它的实现把具体产品的创建推迟到子类中,此 时工厂类不再负责所有产品的创建,而只是给出具体工厂必须实现的接口,这样工厂方法模式就可以允许 系统不修改工厂类...

    Java设计模式——工厂设计模式

    工厂方法模式 抽象工厂模式 面向对象设计的基本原则: OCP(开闭原则,Open-Closed Principle):一个软件的实体应当对扩展开放,对修改关闭。 DIP(依赖倒转原则,Dependence Inversion Principle):要针对接口...

    Python设计模式之工厂方法模式实例详解

    本文实例讲述了Python设计...设计模式——工厂方法模式 工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延时到其子类. 工厂方法模式克服了简单工

    设计模式(四)——工厂模式

    实例化对象,用工厂方法代替new操作。 将选择实现类、创建对象统一管理和控制。从而将调用者跟我们的实 现类解耦。 用到的面向对象设计的基本原则 OCP(开闭原则,Open-Closed Principle):一个软件的实体应当对...

    (创建模式 上)设计模式——工厂、抽象工厂 C++/Python3实现

    使用不同的设计模式可以解决不同的问题。 设计模式可以分为三种大类别:分别是创建型模式、结构型模式、行为型模式。 在开发中,假设不使用设计模式,可能会造成耦合度过高,会造成一定的代码冗余,而且可能会影响...

    C++设计模式原理与实战视频课

    2-1 简单工厂方法的定义场景与实现-针对接口编程的设计思想剖析 2-2 简单工厂实用工程技术:C++对象动态创建技术与配置化开发 2-3 单例模式的定义场景与实现:懒汉、饿汉与多线程安全double checking 2-4 单例模式的...

    设计模式(二) ——工厂模式 (3种工厂模式的实现及优缺点)

    在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 简单来说就是: 我们创建一个工厂类,然后当调用者想要创建一个对象时,只需要告诉工厂类即可,由工厂...

    java设计模式

    目录: 前 言 第一部分 大旗不挥,谁敢冲锋——热身篇 第1章 单一职责原则 1.1 我是“牛”类,我可以担任多职吗 1.2 绝杀技,打破你的传统思维 1.3 我单纯,所以我快乐 1.4 最佳实践 ...附录:23个设计模式

    设计模式可复用面向对象软件的基础.zip

    1.8 怎样使用设计模式 20 第2章 实例研究:设计一个文档编 辑器 22 2.1 设计问题 23 2.2 文档结构 23 2.2.1 递归组合 24 2.2.2 图元 25 2.2.3 组合模式 27 2.3 格式化 27 2.3.1 封装格式化算法 27 2.3.2 Compositor...

    design-pattern-java.pdf

    基础知识 基础知识设计模式概述 从招式与内功谈起——设计模式概述(一) 从招式与内功谈起——设计模式概述(二) 从招式与内功谈起——设计模式概述(三) 面向对象设计原则 面向对象设计原则之单一职责原则 面向...

    Java设计模式:工厂模式——图文+代码示例(通俗易懂)

    每一种设计模式都有它要解决的问题: 工厂模式最主要解决的问题就是创建者和调用者的耦合,那么代码层面其实就是取消对new的使用。 工厂模式有三种: 1. 简单工厂模式 2. 工厂方法模式 3. 抽象方法模式 先来看看,...

    C#抽象工厂实例,设计模式

    设计模式 源码! 优点 l 分离了具体的类。抽象工厂模式帮助你控制一个应用创建的对象的类,因为一个工厂封装创建产品对象的责任和过程。它将客户和类的实现分离,客户通过他们的抽象接口操纵实例,产品的类名也在...

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

    总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元...

    从模式讲到设计模式再到面向对象设计模式

    目前最有影响力的书籍是:《设计模式:可复用面向对象软件的基础》,它共编录了23种设计模式,分三大类别:创建型模式、结构型模式、行为模式,其中有一种创建型模式是抽象工厂设计模式。 在学习抽象工厂设计模式...

    设计模式Demo

    针对23种设计模式,分别写了demo并画了类图帮助理解。 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰...

    工厂模式学习学习 ——记录

    优点:面向接口编程,有非常良好的扩展性,符合开闭原则,将创建的工作转移到工厂类中。 工厂模式每一种单一的工厂类只能完成单一的任务,代码简答。 缺点:当类过多时势必引起类文件臃肿,增加代码开销。

    dao设计模式(1)

    本文主要讲解当前流行的J2EE设计模式——DAO设计模式,包括接口的设计、工厂设计模式的应用,重点阐述的是J2EE中层的概念

    Python设计模式之抽象工厂模式原理与用法详解

    本文实例讲述了Python设计模式之抽象工厂模式原理与用法。...设计模式——抽象工厂模式 抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的类 import sys #抽

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

    设计模式1.1 这是一本什么书1.2 开始前的准备1.3 预备知识1.4 似曾相识的设计1.5 设计模式的起源——模型、视图和控制器1.5.1 在模型对象中封装数据和基本行为1.5.2 使用视图对象向用户展示信息1.5.3 用控制器对象...

Global site tag (gtag.js) - Google Analytics