Java中的工厂模式(1)
现在已经有Car类,有Plane类。
现在做为Client,可以直接new Car,new Plane。
但如果还有其他许多交通工具,我们在客户端就是new A ,new B, new C......然后调用a.x,b.x,c.x
所以们,我们想灵活更换交通工具的话,就想到了多态。
于是乎,改为面向接口式的:
Moveable.java
public interface Moveable {
//默认是public
void run();
}
然后其他交通工具从里面继承。就好了。。。
产生的问题:
Car类的实例,是产品。Plane的实例,也是Plane类对应的产品。
而做为客户,直接对产品进行控制,似乎也说得过去,但如果有一个专门来负责管理产品的类,是不是更好了呢?
所以呢,我们引入了CarFactory和PlaneFactory两个类:
public class CarFactory {
public Car createCar(){
return new Car();
}
}
public class PlaneFactory {
public Plane createPalne(){
return new Plane();
}
}
在客户端:
//这样由plane的工厂来产生plane
PlaneFactory pf = new PlaneFactory();
Moveable m = pf.createPalne();
m.run();
CarFactory cp = new CarFactory();
Moveable m2 = cp.createCar();
m2.run();
写到这,我想你已经猜到我下一步该怎么办了。。
想想啊,前面我们解决了灵活调用交通工具的问题,现在,我们就应该解决灵活调用工厂的问题了。。
所以,我们再把工厂抽象出来:这样,就引入抽象工厂这个概念了。
抽象工厂:就是把原工厂的方法再给抽象出来,把具体生产的动作转变为对某个原有的抽象动作的实现。即是由工厂,到了抽象工厂。
以Car为主线:
也可以用接口,二者均可时,尽量用接口,因为单继承
public abstract class MoveableFactory {
public abstract Moveable create();
}
public class CarFactory extends MoveableFactory{
@Override
public Car create() {
return new Car();
}
}
这样,在客户端,我们只要写:
直接把PlaneFactory改为CarFactory就可以了。
MoveableFactory mf = new PlaneFactory();
Moveable m = mf.create();
m.run();
如上,我们既满足了客户和产品分开的条件,又满足了灵活调用的条件。不错。。。。
Java中的工厂模式(1)相关推荐
- java中的工厂模式
一.工厂模式介绍 工厂模式专门负责将大量有共同接口的类实例化.工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类. 工厂模式的几种形态: (1)简单工厂(Simple Factor ...
- java中的工厂模式_java中工厂模式详解和使用方法
工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻 ...
- 胡博君解Java中简单工厂模式
为什么要用简单工厂模式: 我们都知道程序是分开的,客户端中有程序,服务器端有程序,一般来说我们写的main方法中的程序都是在客户端电脑中的,按照我们学习的时候喜欢的写法: //一般来说这个程序都是在客 ...
- java中的工厂模式_深入理解Java的三种工厂模式
一.简单工厂模式 简单工厂的定义:提供一个创建对象实例的功能,而无须关心其具体实现.被创建实例的类型可以是接口.抽象类,也可以是具体的类 实现汽车接口 奔驰类 宝马类 简单工厂,既能生产宝马又能生产奔 ...
- java中的工厂_java中的工厂模式
1.工厂模式 java中的工厂模式,个人理解是:要想制作一个汽车,则必须有轮子,发动机,座椅等. 1.创建一个接口,并且使得轮子,发动机,座椅三个实现类实现这个接口. 2.创建一个工厂,生成基于给定信 ...
- JAVA设计模式之工厂模式讲解
目录 前言 开始表演 前言 Java中使用工厂模式的主要原因是为了实现代码的灵活性和可维护性.工厂模式是一种创建型设计模式,它提供了一种将对象的创建和使用进行分离的方式.具体来说,工厂模式可以将对象的 ...
- Java设计模式(工厂模式>抽象工厂模式和原型模式)
Java设计模式Ⅱ 1.工厂模式 1.1 简单工厂模式 1.2 工厂方法模式 2.抽象工厂模式 3.总结 4.原型模式 4.1 原型模式 4.2 浅拷贝 4.3 深拷贝 5.建造者模式 1.工厂模式 ...
- Java 设计模式之工厂模式(二)
原文地址:Java 设计模式之工厂模式(二) 博客地址:http://www.extlight.com 一.背景 本篇内容是 Java 设计模式创建型模式的第二篇.上一篇主题为 <Java 设计 ...
- java设计模式之工厂模式(UML类图分析+代码详解)
大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...
最新文章
- STD:Sparse-to-Dense 3D Object Detector for Point Cloud(腾讯香港大学)
- JavaScript强化教程 -- cocosjs场景切换
- 系统文件打开检测脚本
- 一天学会 Maven+Springboot+RabbitMQ 微服务快速开发教程
- 刚刚,OpenStack 第 19 个版本来了,附28项特性详细解读!
- matlab 光谱噪声,环境小卫星高光谱影像条纹噪声去除程序IDL版
- android 温度传感器获取温度,Android 温度传感器返回当前的温度
- LeetCode 105. 从前序与中序遍历序列构造二叉树(递归)
- 通过阿里OSS文件服务返回的URL获取文件流下载
- 在 Panorama 页面中添加 ApplicationBar
- WordPress的wp-cumulus插件------------标签云插件
- 【破损识别】基于matlab GUI机器视觉+SVM玉米种子破损识别(带面板)【含Matlab源码 1651期】
- 开源无人机如何实现空对地框选撞击?
- 架设Wikipedia的本地镜像(Linux联盟收集整理)
- ollydbg打补丁
- char类型与字符编码
- 【论文写作】本科、硕士研究生毕业论文字体、段落格式参考
- Linux主机驱动与外设驱动分离思想[转宋老师]
- 交通大数据应用场景——高速落地检
- [词根词缀]fact/fug/fuse/词源知识F的内容