文档章节

java设计模式第一篇-简单工厂模式

e代宗师
 e代宗师
发布于 2013/12/30 20:17
字数 517
阅读 46
收藏 0

工厂模式解决的问题:如何在java应用开发中实现“面向接口编程”。

接口的用途:通常使用接口来定义实现类的外观,即实现类的行为定义,用来约束实现类的行为。

接口的思想:封装隔离。

使用接口的好处:内部实现和外部调用实现了隔离,只要接口不变,无论内部实现如何改变,都不会导致外部调用的改变。“接口是系统可插拔性的保证”。

1.不用模式的解决方案

接口类:

   1:  public interface Api{
   2:      public void operation();
   3:  }

 

接口的实现类:

   1:  public class Impl implements Api{
   2:      public void operation(){
   3:          System.out.println("Impl");
   4:      }
   5:  }

 

 使用接口类:

   1:   public class Client{

 

   2:        public static void main(String[] args){

 

   3:            Api api = new Impl();

 

   4:           api.operation();

 

   5:       }

 

   6:    }

可见,Impl类仍然暴露给了客户端。

2.使用工厂模式的解决方案

接口类和接口的实现类不变,增加简单工厂类Factory

   1:  public class  Factory{
   2:      public static Api createApi(int condition){
   3:          if(1 == condition){
   4:               return new Impl();
   5:          }else{
   6:              return null;//或者其他ImplA();
   7:          }
   8:      }
   9:  }

 

使用工厂类后,客户端对接口的使用:

   1:  public class Client{
   2:      public static void main(String[] args){
   3:          Api api = Factory.createApi();
   4:          api.operator();
   5:      }
   6:  }

 

使用工厂类后,就实现了接口具体实现的封装,客户端就看不到接口内部的具体实现了,完全体现了接口的“封装隔离”。

3.如果工厂有不同的实现类,在工厂中选择实现方法时可以有两种方法,一种就是在上面的factory中使用if。。。else 语句,通过传入condition参数选择不同的实现类。

再一种方法就是使用perpority配置文件进行配置,这样在客户端就可以不用传入任何参数就能依据配置文件获得需要的接口。

   注:本笔记来源于《研磨设计模式》一书,如有侵权,请联系本人及时进行删除。

© 著作权归作者所有

共有 人打赏支持
e代宗师
粉丝 1
博文 1
码字总数 517
作品 0
海淀
高级程序员
私信 提问
简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别

转载:原地址http://www.cnblogs.com/zhangchenliang/p/3700820.html 简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别 结合简单示例和UML图,讲解工厂模式简单原理。 一、引子 话说...

法斗斗
2018/05/08
0
0
设计模式15——Template Method设计模式

Template Method模板方法设计模式定义一个操作中算法的骨架,将具体步骤的执行延迟到子类中实现。Java中的抽象类就是使用了模板方法设计模式。模板方法设计模式结构如下: 以文档处理为例,T...

小米米儿小
2014/01/24
0
0
为什么java中用枚举实现单例模式会更好

枚举单例是java中使用枚举提供一个实例对象来实现单例模式的一种新方法,虽然单例模式在java中早已存在,但枚举单例实际上从java5引入枚举作为它的关键特性之后相对来说还是一个新的概念,这...

zhoujy
2013/06/01
0
0
学了那么多年设计模式依然不会用!那可真蠢!

什么是设计模式? 设计模式(Design Pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。 设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决...

GitChat技术杂谈
2018/10/26
0
0
设计模式 2014-12-19

book: 阎宏《JAVA与模式》 架构设计栏目 http://blog.csdn.net/enterprise/column.html 概要: http://bbs.csdn.net/forums/Embeddeddriver 23种设计模式分别是: 1.单例模式 2.工厂方法模式...

jayronwang
2014/12/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux Wireshark普通用户启动使用方案

当系统安装好Wireshark后请正常启动是否可以进行正常使用,如果不行请参考下列指导 向系统添加一个用户组 sudo groupadd wireshark //如提示此组存在可跳过 将指定用户添加到这个组中 sudo...

CHONGCHEN
今天
1
0
CSS 选择器参考手册

CSS 选择器参考手册 选择器 描述 [attribute] 用于选取带有指定属性的元素。 [attribute=value] 用于选取带有指定属性和值的元素。 [attribute~=value] 用于选取属性值中包含指定词汇的元素。...

Jack088
今天
2
0
数据库篇一

数据库篇 第1章 数据库介绍 1.1 数据库概述  什么是数据库(DB:DataBase) 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据...

stars永恒
今天
4
0
Intellij IDEA中设置了jsp页面,但是在访问页面时却提示404

在Intellij IDEA中设置了spring boot的jsp页面,但是在访问时,却出现404,Not Found,经过查找资料后解决,步骤如下: 在Run/Debug Configurations面板中设置该程序的Working Directory选项...

uknow8692
昨天
4
0
day24:文档第五行增内容|每月1号压缩/etc/目录|过滤文本重复次数多的10个单词|人员分组|

1、在文本文档1.txt里第五行下面增加如下内容;两个方法; # This is a test file.# Test insert line into this file. 分析:给文档后增加内容,可以用sed 来搞定;也可以用while do done...

芬野de博客
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部