Java设计模式之工厂设计模式
来源:互联网 发布:java 获取jsp页面内容 编辑:程序博客网 时间:2024/04/29 08:26
Java设计模式之工厂设计模式
感叹一下, 世界变化的好快, android的时代跨越也越来越快,从去年这时候android市场达到巅峰而如今,在群里经常看到有人哀怨找不到工作了,也是深有感触。
---------
深沉的我整理下发型,回归正经话题,工程设计模式指的不是一种设计模式, 那是什么呢?答:它确实不是一种设计模式,而是两种, 就是这么调皮,膨胀了,看来要找个女朋友管管了。。。
1、工厂方法设计模式
定义:定义一个用于创建对象的接口,让子类决定实力化哪个类。
说到这里,不禁想到了模板方法设计模式,个人觉得他们有极其相似的设计思路。模板方法是用于创建一系列共同的方法,让其具体时限延迟到子类中去,而工厂方法是针对于创建对象实例。
?
假设有两个接口,接口IConstructorFactory为创建实例的接口。IIstance为被创建出来的实例接口。只要实现这个接口久代表可以被IConstructorFactory的实现类创建的对象。
接着new 2个工厂实现类CreateClassAFactory、CreateClassBFactory,一个用于创建classA 的实例,另一个用于创建classB的实例。
IConstructorFactory.java
/** * Created by Marshon.Chen on 16/8/19. * Usage Desc:创建实例的工厂,相当于某连锁总部 */public interface IConstructorFactory { //用于创建对象,具体创建什么对象由于子类的该方法决定。 IIstance createInstance();}
IIstance.java
/** * Created by Marshon.Chen on 16/8/19. * Usage Desc: 规范子类,空实现 */public interface IIstance {}
CreateClassAFactory.java
/** * Created by Marshon.Chen on 16/8/19. * Usage Desc:创建具体实例实现类,相当于某连锁分部 */public class CreateClassAFactory implements IConstructorFactory { @Override public IIstance createInstance() { return new ClassA(); }}
CreateClassBFactory.java
/** * Created by Marshon.Chen on 16/8/19. * Usage Desc:创建具体实例实现类,相当于某连锁分部 */public class CreateClassBFactory implements IConstructorFactory { @Override public IIstance createInstance() { return new ClassB(); }}
classA.java classB.java是普通的类不贴出来了。
代码很简单就是创建classA ,classB对象出来,然后它们都是由
IConstructorFactory的实现类创建出来的,换句话说,就是IConstructorFactory具体创建什么样的实例由它们的子类来决定,它只是规定了必须创建实现了IInstance接口的实例。这样看来,越来越像模板方法来,但是先人给他区分来出来,这种模版实例功能的模式属于创建型模式--工厂方法模式。
2、抽象工厂模式
俗称:Abstract Factory Pattern
定义:为创建一组相关或者是相互依赖的对象提供一个接口,而不需要指定它们的具体类。(未完待续)
- Java设计模式之工厂设计模式
- [java]设计模式之工厂设计模式
- Java设计模式之工厂设计模式
- Java设计模式之工厂设计模式
- JAVA设计模式之工厂设计模式
- java设计模式之工厂设计模式
- Java设计模式之工厂设计模式
- 《java设计模式》之工厂设计模式
- Java设计模式之工厂
- JAVA设计模式之工厂模式之简单工厂模式
- JAVA设计模式之工厂模式之工厂方法模式
- JAVA设计模式之工厂模式之抽象工厂模式
- Java设计模式之工厂模式篇
- JAVA的设计模式之工厂模式
- Java设计模式之工厂方法模式
- Java设计模式之工厂方法模式
- java设计模式之工厂方法模式
- java设计模式之抽象工厂模式
- CRS-2800 CRS-4000
- Oracle 11gR2 RAC ohasd failed to start 解决方法
- JS原生获取class对象(getElementsByClassName)
- RAC时间同步的两种方法
- RAC 开启gsd和oc4j服务
- Java设计模式之工厂设计模式
- CentOS6+MySQL5.6二进制安装
- MySQL忘记密码怎么办
- MySQL多实例安装
- 贪心算法之最优装船
- 批量转换引擎为innodb
- java函数重载
- java基础学习之事件监听之键盘监听
- MySQL ibdata多路径扩容