工厂模式个人理解--JAVA
来源:互联网 发布:sql select 不同 编辑:程序博客网 时间:2024/06/03 21:30
一直想学习下设计模式,不过总是被耽搁,今天就从最简单的工厂模式开始吧.记录下来.
买了个GOF的设计模式的书,不过自己水平有限,上面的例子又都不是java的,举的例子又不像国内的那种简单, 所以看起来有点吃力,
就去网上搜了下看看别人的新的,结果发现大部分内容都一样, 而且大部分内容和书上的也一样.只是例子换了而已.
对于工厂模式的描述, 各个博客基本是一字不差,而且感觉过于学院派.我还是把我个人理解写下来吧.
工厂模式分类:(GOF的书中只说了2种,1,2算一种)
1.简单工厂
2.工厂方法
3.抽象工厂
下面一种一种来说.有个博客的开车的例子不错.我也用这个例子来说明.
1.简单工厂
例如一个土豪,有三辆车,奔驰,宝马,奥迪. 还雇了司机为他开车。不过土豪坐车时总是怪怪的:
上奔驰,车后跟司机说“开奔驰车!”,坐上宝马后他说“开宝马车!”,坐上奥迪说“开奥迪车!”
这中问题,在程序中也会出现. 可以用简单工厂来解决.(总感觉好像学习多态的时候也是这种例子)
代码很简单. 先抽象一个车的接口,每个车都实现这个接口.
然后做个生产车的工厂(一个类),来判断生成什么车.
public interface Car {public void driver();}public class BenCar implements Car {@Overridepublic void driver() {System.out.println("Ben dirver !!!");}}public class AodiCar implements Car {@Overridepublic void driver() {System.out.println("Aodi dirver !!!");}}
//来判断生成什么车public class CarFactory {public static Car getCar(String type){if(type.equals("Ben")){return new BenCar();}if(type.equals("Aodi")){return new AodiCar();}return null;}}
<pre name="code" class="java">public class Person {public static void main(String[] args) {Car car = <span style="font-family: Arial;">CarFactory </span><span style="font-family: Arial;">.getCar("Aodi");</span>car.driver();}}
小结:感觉很简单吧. 这个模式有一点不好的地方,就是新增一辆车的话,就需要去工厂的CarFactory里面增加一个判断.
据说这个不符合开闭原则(对扩展开放;对修改封闭).还有就是可能如果层次多的话,CarFactory比较乱吧.
(还有个个人疑惑, 是否CarFactory里面的getCar()方法必须是static的才算简单工厂?)
2. 工厂方法
工厂方法,就是把上面的CarFactory类也抽象一下,这样就符合开闭原则, 代码如下(Car类不变,就用上面的代码)
public interface Driver {public Car getCar();}public class BenDriver implements Driver {@Overridepublic Car getCar() {return new BenCar();}}public class AodiDriver implements Driver {@Overridepublic Car getCar() {return new AodiCar();}}public class Person {public static void main(String[] args) {Driver driver = new AodiDriver();Car car = driver.getCar();car.dirver();}}
总结;可以看到工厂方法就是把工厂再抽象了一下.
3.抽象工厂
抽象工厂和工厂方法貌似没有太大区别.网上的说明都是指抽象工厂是为了应付更复杂的模式.
总结: 感觉工厂模式,其实主要是面向接口编程,增强代码的可扩展性等.
这个设计模式不算太难,难的应该是什么时候用这个模式.这可能只有实战经验才行了.
- 工厂模式个人理解--JAVA
- 工厂模式学习个人理解
- 读工厂模式个人理解
- 个人对工厂模式的理解
- 抽象工厂模式的个人理解
- 个人理解总结之抽象工厂模式
- java的工厂模式理解
- java工厂模式的理解
- 个人对于PHP设计模式之工厂模式的理解
- 设计模式之工厂模式(个人理解)
- JAVA之工厂方法模式个人见解
- JAVA设计模式---工厂模式理解
- java 工厂模式的一种理解
- 深入理解java三种工厂模式
- 代理模式,简单(静态)工厂模式,单例模式,模板方法模式个人理解
- 单例模式个人理解--JAVA
- Java Web MVC模式个人学习理解
- 适配器模式 个人理解+JAVA 小例子
- Qt源码分析之QObject
- HDU 1175 连连看+ HDU 1728 逃离迷宫
- estjndrykm电深入研究塞推荐染色鱼没一日三就
- drykmdrykmry导热油开门人说也没生低碳阴谋他的号码
- Windows XP Mode忘记密码或清除了登录
- 工厂模式个人理解--JAVA
- 致工作了一年的自己
- 练习1-9
- java.lang.String
- bzoj2190[SDOI2008]仪仗队
- Hibernate4+Spring4关于getCurrentSession与openSession
- uva--100 - The 3n + 1 problem
- Android下用Media Player实现一个最简单的视频播放器
- 线程