一个Demo理解工厂设计模式
2015-12-06 23:31
423 查看
简介
第一次写博客,就从设计模式一个一个开始把,就当练习和巩固。然后这次的工厂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 {//工厂方法 @Override void 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 {//抽象工厂模式 @Override public String createDetail1() { return " jam music deatil 1"; } @Override public String createDetail2() { return " jam music deatil 2"; } }
我的理解大致就是这样,一切用代码来解释把。我想想看这么上传源码。希望对有需要的人有帮助,也希望大神斧正!
源码下载
相关文章推荐
- js拖拽
- 轻量级mvvm Web开发框架 postby:http://zhutty.cnblogs.com
- HTML5 Canvas入门
- 【数据拾遗(java描述)】--- 哈夫曼树的基本实现
- html5 - 基础格式认识和标签用法(文本元素常用方法)
- 通过转移表练习函数指针的使用
- 睡前小dp-hdu3853-概率dp
- linux中ctrl+z和ctrl+c的区别
- JVM注解@CallSensitive
- Python——函数的高级话题(1)
- 一些常用的控制行命令
- dos命令大汇总
- NSUserDefaults偶尔/有时候保存数据会失败/失效
- jq参数以及e.target
- java基本常识
- Jenkins学习之——(3)将项目发送到tomcat
- 12.06 JavaScript
- 面向对象
- Java 通过JDBC连接Mysql数据库的方法和实例【图文说明】
- Date