(@WhiteTaken)设计模式学习——工厂方法模式
这个工厂方法模式,是简单工厂的延伸,不同点在于,将某个具体的类继续细分,将核心部分抽象成一个接口。而简单工厂,把核心写在了一个类上,不利于拓展。
举个例子,简单工厂中有苹果类,香蕉类,我们创建了一个FruitFactory的工厂类,用来生成苹果和香蕉类的实例。
但是如果我们需要创建更多的水果类,这时候就需要修改FruitFactory工厂类。这样做很不方便。
这时候就有了工厂方法模式的实现。
具体方法是我们将总的工厂类,抽象成一个接口,然后创建苹果类工厂和香蕉类工厂,去实现这个接口。
这样即使我们再添加橘子类,我们需要创建橘子类工厂去实现水果工厂的接口。
在客户端的调用中就可以轻松获得橘子对象。
直接上代码:
1.创建一个水果接口,让水果们都去实现它。
 public interface Fruit {
     public void Get();
 }
2.创建苹果类和香蕉类。
 public class Apple implements Fruit{
     public void Get()
     {
         System.out.println("Apple");
     }
 }
 public class Banana implements Fruit {
     public void Get() {
         System.out.println("Banana");
     }
 }
3.创建水果工厂的接口。
 public interface FruitFactory {
     public Fruit getFruit();
 }
4.创建苹果工厂和香蕉工厂,去实现水果工厂的接口。
 public class AppleFactory implements FruitFactory{
     public Fruit getFruit() {
         return new Apple();
     }
 }
 public class BananaFactory implements FruitFactory {
     public Fruit getFruit() {
         return new Banana();
     }
 }
5.主客户端要做的事。
 public class MainClass {
     public static void main(String[] args) throws InstantiationException, IllegalAccessException {
         FruitFactory appleFactory=new AppleFactory();
         FruitFactory bananaFactory=new BananaFactory();
         Fruit apple=appleFactory.getFruit();
         Fruit banana=bananaFactory.getFruit();
         apple.Get();
         banana.Get();
     }
 }
这样就完成了工厂方法模式与简单工厂的结合。极大的降低了耦合。
(@WhiteTaken)设计模式学习——工厂方法模式的更多相关文章
- java设计模式学习 ----- 工厂方法模式(Factory Method)
		
工厂方法模式(Factory Method) 工厂方法模式分为三种:普通工厂模式.多个工厂方法模式.静态工厂方法模式 普通工厂模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建. 关系图 ...
 - C#设计模式(3)——工厂方法模式
		
一.概念:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类. 二.代码实现 namespace 设计模式之工厂方法模式 { /// <summary&g ...
 - 乐在其中设计模式(C#) - 工厂方法模式(Factory Method Pattern)
		
原文:乐在其中设计模式(C#) - 工厂方法模式(Factory Method Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 工厂方法模式(Factory Method Pa ...
 - C#设计模式(3)——工厂方法模式(转)
		
C#设计模式(3)——工厂方法模式 一.引言 在简单工厂模式中讲到简单工厂模式的缺点,有一点是——简单工厂模式系统难以扩展,一旦添加新产品就不得不修改简单工厂方法,这样就会造成简单工厂的实现逻辑过 ...
 - Java设计模式之工厂方法模式(转)  实现是抽象工厂?
		
Java设计模式之工厂方法模式 责任编辑:覃里作者:Java研究组织 2009-02-25 来源:IT168网站 文本Tag: 设计模式 Java [IT168 技术文章] ...
 - php设计模式之工厂方法模式
		
php设计模式之工厂方法模式 工厂方法模式 工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Pol ...
 - 再起航,我的学习笔记之JavaScript设计模式06(工厂方法模式)
		
上一次已经给大家介绍了简单工厂模式,相信大家对创建型设计模式有了初步的了解,本次我将给大家介绍的是工厂方法模式. 工厂方法模式 工厂方法模式(Factory Method):通过对产品类的抽象使其创建 ...
 - 设计模式——从工厂方法模式到 IOC/DI思想
		
回顾简单工厂 回顾:从接口的角度去理解简单工厂模式 前面说到了简单工厂的本质是选择实现,说白了是由一个专门的类去负责生产我们所需要的对象,从而将对象的创建从代码中剥离出来,实现松耦合.我们来看一个例子 ...
 - java 23 - 1 设计模式之工厂方法模式
		
转载: JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
 
随机推荐
- js 如何动态添加数组_百度知道
			
1.数组的创建var arrayObj = new Array(); //创建一个数组var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长 ...
 - EM 期望最大化算法
			
(EM算法)The EM Algorithm EM是我一直想深入学习的算法之一,第一次听说是在NLP课中的HMM那一节,为了解决HMM的参数估计问题,使用了EM算法.在之后的MT中的词对齐中也用到了. ...
 - Lucene学习注意要点
			
相关书籍: <Lucene实战>第二版: <搜索引擎基础教程>: <Lucene搜索引擎开发进阶实战>:(我现在看得书) 学习注意要点: 不要盲目从代码入手,而要先 ...
 - window环境变量
			
首先Window中有很多乱七八糟的路径变量之类的,归类下来有几类,主要是为了我们分清楚概念,以免搞的糊涂了. 1. Window系统的环境变量:顾名思义,就是系统级别的变量,或者利用我们编程的角度来讲 ...
 - FZU 2112 Tickets
			
这个问题可以转变一下,先要知道有几个连通块,连通块之间肯定需要添加一条边, 还需要知道每个连通块内部需要添加几条边,这个问题等价于求一张图至少需要几笔画成,这个问题的答案是度为奇数的点的个数/2 #i ...
 - leetcode--011 copy list with random pointer
			
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA3UAAABjCAIAAACzC75sAAAMTElEQVR4nO3cyYHivBYG0D8n0nIojo ...
 - Eclipse上Spring-tool的安装
			
三种安装方式: 插件地址:http://spring.io/tools/sts/all 1.在线安装 Help-->> Install new Software 2.本地安装,Help- ...
 - java 正则匹配int型
			
private static Pattern DIGIT_PATTERN = Pattern.compile("=\\d++"); Matcher goodsTypeMatcher ...
 - 《Web接口开发与自动化测试 -- 基于Python语言》 ---前言
			
前 言 本书的原型是我整理一份Django学习文档,从事软件测试工作的这六.七年来,一直有整理学习资料的习惯,这种学习理解再输出的方式对我非常受用,博客和文档是我主要的输出形式,这些输出同时也帮 ...
 - [HNOI2004]Language L语言
			
2777: [HNOI2004]Language L语言 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 10 Solved: 5[Submit][S ...