简单工厂模式(由专门的类来创建实例)
来源:互联网 发布:js删除节点本身 编辑:程序博客网 时间:2024/06/13 23:09
最近入手程杰大牛的《大话设计模式》这本书,这本书深入浅出讲述了面向对象的23种设计模式,语言通俗易懂,代码短小精炼,理论的概述很少,内容都转化成了我们耳熟能详,喜闻乐见的文字,下面让我举个例子哈!
比如我们都学过面向对象编程,但是你要是说起来面向对象有什么好处?恐怕很多人都会懵逼,不知道从何说起。众所周知,四大发明中只有印刷术不是发明而是一种改进,以前的是雕版印刷术(将所有字印在同一个板上)改进成活字印刷术(每个字都是一个印章,需要什么字就去拿章),大家可以想想改进之前有哪些劣势?
- 不可维护(假如我印好了一版《滕王阁序》,但是我检查的时候发现,MD,我把“落霞与孤鹜齐飞”中的“齐”印成了“起”,那我这篇文章就废了,还得重新一个一个字印成一版)
- 不可重用(即使我印好了也就是只能用这一次,用完就扔了)
- 不可扩展(在1中,假如我少印了一个“齐”,那么我还是得重新印)
- 总而言之,改进之前很不灵活
由此我们可见,活字印刷术之前的印刷工们每天大量重复无用的劳动,浪费了很多时间,如果我们的代码中不考虑面向对象思想,那么我们就和这些印刷工们一样了。面向对象就像是活字印刷,一个字一个章,章可以重复利用,章与章之间不会相互影响,需要新字加新章,字错了就改这一个章。
作者用这个活字印刷的例子帮我深入了解了面向对象思维,不知道有没有帮助你理解呢?如果你很喜欢作者这种比喻的话,在这里隆重推荐这本书哦。
本节课我们要学习的是简单工厂模式
假如我们现在遇到这样一个项目需求:
A公司有两条产品线,一个是生产随身听,一个是生产电视,B公司是采购公司,不懂A公司的产品具体怎么生产,让你根据这一点实现B公司采购的代码
如果不用工厂模式,我们会想,不就是定义一个随身听类,一个电视类吗,然后定义一个采购类,采购随身听或者电视类?这个思路是错的,因为你在采购类采购随身听或者电视类就相当于知道了mp3和tv是如何制造的(你调用了他们的构造方法)这和题目要求不符。
???该怎么做呢?
现在是两条产品线,以后会不会增加更多呢?考虑到可扩展性,我们需要定义一个产品线类(Product),包括随身听类(MP3)和电视类(TV),以后也许会有空调类,冰箱类等等,A还需要有一个工厂类,因为B不知道我怎么生产的,我得根据B的需求提供相应的产品(也就是从A工厂拿货物)Factory类,对于B来说,B只负责采购,需要一个采购的类,下面我们看代码:
代码1 产品 public interface Product { void play();//具备播放功能}
public class MP3 implements Product { @Override public void play() { System.out.print("mp3播放音乐!"); }}
public class TV implements Product { @Override public void play() { System.out.print("TV播放电视剧!"); }}
采购工厂,B只需要提出需求,A工厂来负责生产对应的产品public class Factory { public static Product getProduct(String s){ switch (s){ case "TV": TV tv = new TV(); return tv; case "mp3": MP3 mp3 = new MP3(); return mp3; default: return null; } }}
B提出了需求要生产TV,工厂就去生产TVpublic class Main { public static void main(String args[]) { TV tv = (TV) Factory.getProduct("TV"); }}
简单工厂模式的核心思想就是:有一个专门的类来负责创建实例的过程。
具体来说,把产品看着是一系列的类的集合,这些类是由某个抽象类或者接口派生出来的一个对象树。而工厂类用来产生一个合适的对象来满足客户的要求。
我们日常工作中最经常用的简单工厂模式就是JDBC使用
- 简单工厂模式(由专门的类来创建实例)
- 简单工厂/工厂/抽象工厂模式(创建类)
- 工厂模式解决如何不通过new来创建实例对象的方法
- 简单工厂模式实例
- 简单工厂模式实例
- 创建型模式:工厂模式(简单工厂模式,抽象工厂模式,工厂模式)
- 抽象工厂模式:简单工厂模式、工厂方法模式对比;在工厂方法模式中使用反射创建对象实例
- c# interface 的理解(工厂模式)简单实例
- c# interface 的理解(工厂模式)简单实例
- 创建模式--简单工厂模式
- 简单工厂模式(SimpleFactory)----创建笔记
- 简单工厂模式(SimpleFactory)----创建笔记
- 简单工厂模式——使用最简单的需求来完成一个简单工厂模式
- 结合实例分析简单工厂模式&工厂方法模式&抽象工厂模式的区别
- 由简单三层到工厂模式
- 工厂模式(使用配置文件来确定具体的实例)
- 简单工厂模式、工厂方法模式、抽象工厂模式这三种工厂模式的实例及其闭合原则。
- 简单工厂模式及实例
- 查找最接近的元素
- git学习笔记
- GUI编程【一】
- 俄罗斯方块.C语言
- jdbc和Hibernate (oracle和mySql)连接数据库 代码步骤
- 简单工厂模式(由专门的类来创建实例)
- Java序列化机制详解
- 配置管理·十六
- View关于坐标的几个方法和属性
- web项目的Linux服务器部署发布以及域名访问
- 你不知道的关于淘宝公司的秘密——淘宝成立内幕
- 网站前端设计中解决不同分辨率电脑测量尺寸不同的问题
- 【逻辑思考】有时评论比内容更精彩
- 软件开发技术职位分析及职业规划