摘抄至原文链接
设计模式并不是某一种语言所特有的,而是一种设计理念。
工厂模式的目标:
根据不同的需求创建实例化对象。
我们将通过一个特定的需求来逐渐深入的讲解工程模式的用法。
我们需要达到的一个需求是,做一个音乐播放器,这个播放器有四个按钮,分别是上一首、下一首、播放暂停、静音。
针对上面的需求,我们先按照最简单的工厂模式写一个方法。
这是最简单的工厂模式
通过给action传递不同的参数,可以获取不同的播放器状态。
用面向对象的思维去修改上面的方法,结果为
在上述面向对象的工厂模式中,建立一个WangyiMusicAction对象,然后扩展其prototype属性,这样每个实例都会有自己的方法
改进工厂模式
上面的工厂模式中,只能生成WangyiMusicAction的对象,如果我还要生成一个QQMusic和BaiduMusic,XiamiMusic,只有每个music都得写一遍方法,这是不值得推荐的。
我们可以通过一个Factory(工厂)来动态创建各种类型的Music,首先是WangyiMusicAction。
然后是QQMusicAction。
最后是两种的Factory方法,并通过Factory生成一个QQMusic的实例。
优化工厂模式
但是在上面的工厂模式中,我们发现WangyiMusic和QQMusic的prototype属性可以封装成一个对象,用作父类继承。
定义父类
继承
通过修改prototype属性实现继承。
建立Factory工厂
建立工厂动态生成WangyiMusic或者QQMusic,然后生成一个QQMusic实例,并调用相应的方法。
通过上述的继承父类方案,可以优化代码结构,工厂模式也使用的更加简洁。
网友评论