文档章节

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

e代宗师
 e代宗师
发布于 2013/12/30 20:17
字数 517
阅读 45
收藏 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
海淀
高级程序员
从 Java 到 Scala (三): object 的应用

本文由 Captain 发表在 ScalaCool 团队博客。 在上篇 Java 到 Scala 系列中,我想你或多或少在语言特性上对有了一定的掌握,在了解完它酷酷的语言特性——让静态回归常态并能简单运用其衍生出...

ScalaCool
09/10
0
0
练就Java24章真经—你所不知道的工厂方法

前言 最近一直在Java方向奋斗《终于,我还是下决心学Java后台了》,今天抽空开始学习Java的设计模式了 。计划有时间就去学习,你这么有时间,还不来一起上车吗? 之所以要学习Java模式,是因...

codeGoogle
09/04
0
0
简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别

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

法斗斗
05/08
0
0
20个设计模式和软件设计面试问题

不管是参加Java面试还是C#面试,设计模式和软件设计都是任何编程面试中的必问问题。实际上,编程能力和设计技巧是对彼此很好的补充。一个好的程序员通常都是一个好的软件设计人员。他们知道怎...

LCZ777
2014/08/13
0
0
设计模式: Java中的工厂设计模式

原文链接 https://github.com/shellhub/blog/issues/22 前言 工厂设计模式(Factory Design Pattern)属于创建模式之一,工厂设计模式在JDK,Spring,Stuts被广泛使用 当一个类或者接口有多个子类...

shellhub
08/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

树莓派上安装 Nextcloud 云

# install docker and docker composesudo apt-get updatesudo apt-get install git docker-composecurl -sSL https://get.docker.com | sh# fetch projectcd ~git clone https://git......

How11
2分钟前
0
0
python 基本语法

布尔值:True False,操作符有 and, or, not; 常量通常使用大写表示,如PI = 3.14159265359; 除法操作符有 /, //, %,如 10 / 3 = 3.3333333333333335,10 // 3 = 3, 10 % 3 = 1; 在计算机内存中...

bug_404
4分钟前
0
0
centos 下安装 elastic search 启动的问题

正常步骤 1Download and unzip Elasticsearch 2 Run bin/elasticsearch 3 Run curl http://localhost:9200/ 异常信息: root 账户启动报错,Exception in thread "main" Java.lang.RuntimeE......

xiaomin0322
10分钟前
0
0
mysql_exceptions.OperationalError: 1054

错误:python连接Mysql错误:_mysql_exceptions.OperationalError: (1054, "Unknown column 'CVE' in 'field lis解决办法 注:要根据自己具体情况进行判断,可以 print sql % args,来判断该...

fang_faye
13分钟前
0
0
分布式数据库DDM Sidecar模式负载均衡

简介 1.分布式数据库中间件 DDM 分布式数据库中间件(Distributed Database Middleware)是解决数据库容量、性能瓶颈和分布式扩展问题的中间件服务,提供分库分表、读写分离、弹性扩容等能力...

中间件小哥
17分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部