大话设计模式之_工厂模式
来源:互联网 发布:软件著作权 专利权 编辑:程序博客网 时间:2024/05/22 13:41
大话设计模式之_工厂模式
工程方法(即简单工厂模式simpleFactory,或静态工厂方法 static factory method)
抽象工厂
什么是工厂呢?
工程模式是我们最常用的设计模式,在很多开源框架里头可以说工程模式是遍地开花呀,当然你如果你有兴趣写一个开源框架那么还得掌握:注解、反射机制,这个小笔笔会在后面跟大家分享吐槽。给大家附上:笔者曾经写的一个app的下拉刷新和加载更多的框架(由于涉及到公司的安全协议,这里给大家分享实现的思路和部分核心代码)
言归正传:工厂模式是我们最常用的实例化对象模式,通俗的说就是用工厂方法替代new操作一种设计模式
1.工厂方法
核心思想就只要记住一句话:有一个抽象的Factory类(可以是抽象类和接口)这个类不负责在具体的产品生产,而是制定一种规范,具体的生产由其子类去完成。
ps:如果你理解上面这句话了,那么就说明你已经掌握了过程设计模式的精髓了,现在你已经成功了80%了,别担心,剩下的20%我给大家贴个demo就一目了然了
//1.定义接口public interface People{public void say();}//2.1接口的实现类public void Chinese implements People{public void say(){system.out.printfln("中国话");}}//2.2接口的实现类public void Amercia implements People{public void say(){system.out.printfln("英语");}}//3.工厂类,制定规范public class People_Factory{//方法的返回值,用到了多态public static People create(int type){if(type ==1){return new Chinese();}else if(type ==2){return new Amercia();}}}//4.演示效果public class TestFactory{public static void main(String[]args){People p = People_Factory.create(1);p.say();People p = People_Factory.create(2);p.say();}}
2.抽象工厂
抽象工厂模式是工厂方法模式的升级版,它是用来创建一组相关或者相互依赖的对象。(又是很精辟的一句话,此处高能好好品味)
是不是有点难以理解?那就看下他们的区别对比下不同点,然后就知道抽象工厂是什么了。工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是对对个产品等级结构。
在编码中,通常一个产品结构为一个接口或者抽象类,也就是说,工厂方法模式提供的所有产品都是衍生自同一个接口或者抽象类的,而抽象工厂模式所提供的产品则是衍生自不同的接口或者抽象类。
在抽象工厂模式中,有一个产品族的概念(即位于不同产品等级结构中功能相关联的产品组成的家族)。抽象工厂模式所提供的一系列产品就组成一个产品族;而工厂方法提供的一系列产品称为一个等级结构。
下面以生产汽车的例子讲述抽象工厂
2.0排量两车厢、2.3排量两车厢:属同一等级结构
2.0排量两车厢、2.0排量三车厢:属同一个产品族
ps:老规矩上代码,讲了一大通还是代码直观点
//1.1定义产品1接口public IProduct1{public void show();}//1.2定义产品2接口public IProduct2{public void show();}//2.1实现定义的接口class Product1 implements IProduct1{public void show(){system.out.println("这是产品1");}}//2.2实现定义的接口class Product2 implements IProduct2{public void show(){system.out.println("这是产品2");}}//3抽象工厂的接口interface IFactory{public IProduct1 createProduct1();public IProduct2 createProduct2();}//4抽象工厂的实现类class MyFactory implements IFactory{public IProduct1 createProduct1(){return new Product1();}public IProduct2 createProduct2(){return new Product2();}}//5如何使用public class Client{public static void main(String[]args){IFactory factory = new MyFactory();factory.createProduct1().show();factory.createProduct1().show();}}
总结
如果工厂的产品全部属于同一个等级结构,则属于工厂方法模式;如果工厂的产品来自多个等级结构,则属于抽象工厂模式。
- 大话设计模式之_工厂模式
- 大话设计模式_简单工厂模式
- 大话设计模式_工厂方法模式
- 大话设计模式_抽象工厂模式
- 大话设计模式之 工厂模式
- 大话设计模式之简单工厂模式
- 大话设计模式之简单工厂模式
- 大话设计模式之工厂方法模式
- 大话设计模式之抽象工厂模式
- 大话设计模式之简单工厂模式
- 大话设计模式之工厂模式
- 大话设计模式之工厂模式
- 大话设计模式之抽象工厂模式
- 大话设计模式之简单工厂模式
- 大话设计模式之--简单工厂模式
- 大话设计模式之简单工厂模式
- 大话设计模式读后感之工厂模式
- 大话设计模式之工厂方法模式
- tomcat部署web的三种方式
- oracle数据块与PCTFREE PCTUSED
- 【游戏渲染】Unity&Shader基础篇-Cg语法,数据类型与关键字
- 禁用浏览器缓存的过滤器
- ArrayList集合
- 大话设计模式之_工厂模式
- Solr例子一
- jni接口部分语法
- OpenGL像素格式
- GIT 不能自动补全 CentOS
- JAVA集合
- VS2013 IDE环境 OPENCV3.0.0以上依赖库环境 findContour 函数在Release模式下出现异常解决办法之一
- Android博文整理汇总
- 配置nginx无法登陆问题