(@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设计模式之工厂模式(简单工厂模式+工厂方法模式)
随机推荐
- MySQL的mysql_insert_id和LAST_INSERT_ID
摘要:mysql_insert_id和LAST_INSERT_ID二者作用一样,均是返回最后插入值的ID 值 1 mysql_insert_id 一.PHP获取MYSQL新插入数据的ID mysql ...
- 内层div的margin-top影响外层div——引出外边距合并Collapsing margins
内层div的margin-top影响外层div——引出外边距合并Collapsing margins 作者:zccst 今天才算是了解边距合并.正如一位前辈所言,每一个CSS的坑,都让你学到不少知识. ...
- 【BZOJ 1367】 1367: [Baltic2004]sequence (可并堆-左偏树)
1367: [Baltic2004]sequence Description Input Output 一个整数R Sample Input 7 9 4 8 20 14 15 18 Sample Ou ...
- Spring MVC 关于分页的简单实现
据本人了解,目前较常用的分页实现办法有两种: 1.每次翻页都修改SQL,向SQL传入相关参数去数据库实时查出该页的数据并显示. 2.查出数据库某张表的全部数据,再通过在业务逻辑里面进行处理去取得某些数 ...
- java8 stream ,filter 等功能代替for循环
直接上代码,比较实在. 对象A public Class A{ private Long id; private String userName; ..... ....省略get和set方法 } 在L ...
- Java 抽象类和接口与多态
引入抽象类和接口的原因 即"针对接口编程",关键就在多态,即向上转型 当变量的的声明类型是超类型时,即抽象类或者接口,这样,只要是具体实现此超类型的类所产生的对象,都可以指定给这个 ...
- How do I connect to a local elevation server?
How do I connect to a local elevation server? brett Reply | Threaded | More Mar 18, 2009; 10:02p ...
- zepto animate
// Zepto.js // (c) 2010-2013 Thomas Fuchs // Zepto.js may be freely distributed under the MIT licens ...
- 高尔夫 之 TEE
黑色:男子职业选手蓝色:男子业余高手.女子职业选手白色:男子初学球手.老年球手.女子业余高手红色:女子选手金色:有的球场做为介于 黑Tee (职业球员)与 蓝Tee (业余高手)之间的Tee 台:有的 ...
- ipyparallel 中的 pi的求法
1.PI的求法的数学依据 如图,可以看见在边长为1的正方形里面,有一个1/4圆,我们随机在正方形中取点,点在圆内的概率和点在正方形内的概率之比正好为两者的面积之比.这样就有在圆内的点的数目比所有点的数 ...