一个Demo理解工厂设计模式
来源:互联网 发布:java foreach能倒序 编辑:程序博客网 时间:2024/05/17 08:15
简介
第一次写博客,就从设计模式一个一个开始把,就当练习和巩固。然后这次的工厂demo的原型是一个歌曲推荐相关的类,然后我把我理解的设计模式都写了进去,当然也发现一点耦合,这些就仁者见仁,智者见智把,实际项目中能用到的话,应该也要自己在考虑设计一下。
我理解的工厂设计模式
1.简单工厂
简单工厂我觉得应该就是一个类的方法(可以是静态),产生你需要的对象,细节方面可以自己把握。
public class JamMusicFactory {public BaseMusic createMusic(String songName){BaseMusic music =null;IMusicDatailFactory datailFactory =new JamMusicDetailFactory();//简单工厂music =new JamMusic("jam",songName,new Date(),"rock");music.generateDetail(datailFactory);//抽象工厂return music;}}
2:一般工厂方法(继承)
一般工厂方法用到的思想大致是自己定义一个abstract类,让后将工厂方法设置为abstract,又子类去实现创建。public abstract class AbstractMusiceCenter {private BaseMusic music;abstract void generateMusic();public void recommendMusic() {generateMusic();System.out.println(music);}public BaseMusic getMusic() {return music;}public void setMusic(BaseMusic music) {this.music = music;}}
下面是实现:
public class ChineseMusicCenter extends AbstractMusiceCenter {//工厂方法@Overridevoid generateMusic() {JamMusicFactory factory =new JamMusicFactory();//简单工厂this.setMusic(factory.createMusic("love"));}public static void main(String[] args) {ChineseMusicCenter center =new ChineseMusicCenter();center.generateMusic();center.recommendMusic();}}
3.抽象工厂模式(组合)
抽象工厂模式用到了接口,简单理解就是把你要做的工厂方法定义到接口,然后传到目标类,让他自己选择调用。这部分调用在简单工厂里面。
public interface IMusicDatailFactory {String createDetail1();String createDetail2();}
public class JamMusicDetailFactory implements IMusicDatailFactory {//抽象工厂模式@Overridepublic String createDetail1() {return " jam music deatil 1";}@Overridepublic String createDetail2() {return " jam music deatil 2"; }}
我的理解大致就是这样,一切用代码来解释把。我想想看这么上传源码。希望对有需要的人有帮助,也希望大神斧正!
源码下载
0 0
- 一个Demo理解工厂设计模式
- 设计模式之 工厂模式(demo)
- 工厂设计模式及理解
- 设计模式-简单工厂(Demo)
- 设计模式-工厂方法(Demo)
- 设计模式-抽象工厂(Demo)
- 我理解的设计模式:工厂模式
- 设计模式-工厂模式的理解
- JAVA设计模式---工厂模式理解
- 简单理解设计模式之工厂模式
- 理解设计模式之工厂模式
- 设计模式理解之工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)
- 设计模式最简Demo:策略模式 + 简单工厂模式
- 一天一个设计模式---工厂方法模式
- 一天一个设计模式---抽象工厂模式
- 设计模式之简单工厂的理解
- 工厂设计模式的简单理解
- 设计模式--工厂模式(一个关于工厂的故事)
- 欢迎使用CSDN-markdown编辑器
- js拖拽
- Js获取当前日期时间及其它操作
- c++ 11 10个基本新特新
- [UVA 10615]Rooks[二分图匹配]
- 一个Demo理解工厂设计模式
- KMP算法(下篇)
- 利用htmlunit和jsoup来实现爬取js的动态网页
- 怎样学习 C++ STL?
- hdu 5592 线段树 + 二分
- 【Unix/Linux编程实践】文件系统:编写pwd
- WebSocket的过程与理解
- 【郝斌数据结构自学笔记】57-59_递归8 _ 汉诺塔_1线性结构总复习 2线性结构和非线性结构关系 3栈队列链表数组之间的关系【重点】
- 在win10+Linux Ubuntu双系统下安装win xp三系统的痛苦经历