关键词:
什么是工厂方法模式:
工厂方法UML结构图:
从图中我获取以下信息:
1、 Product是个接口,而Creator是个抽象类(我还是试试接口)
2、ConcreateProduct和ConcreteCreator是有依赖关系的,后者依赖前者
接下来看看简单工厂模式中例子用工厂模式实现的设计图:
根据设计图。直接上代码:
运算接口:
package com.sjmx.slpFactory; public interface Operation { public double getResult(double a,double b); }
运算加法实现类:
package com.sjmx.slpFactory; public class OperationAdd implements Operation { @Override public double getResult(double a, double b) { return a+b; } }
运算减法实现类:
package com.sjmx.slpFactory; public class OperationDelete implements Operation { @Override public double getResult(double a, double b) { return a-b; } }
其他的实现类省略.............................
工厂接口:
package com.sjmx.factory; import com.sjmx.slpFactory.Operation; public interface Factory { Operation getOperation(); }
工厂加法实现类:
package com.sjmx.factory; import com.sjmx.slpFactory.Operation; import com.sjmx.slpFactory.OperationAdd; public class AddFactory implements Factory { @Override public Operation getOperation() { return new OperationAdd(); } }
工厂减法实现类:
package com.sjmx.factory; import com.sjmx.slpFactory.Operation; import com.sjmx.slpFactory.OperationDelete; public class DeleteFactory implements Factory { @Override public Operation getOperation() { return new OperationDelete(); } }
其他实现类省略不写了。。。
客户端代码:
package com.sjmx.factory; import com.sjmx.slpFactory.Operation; public class Client { public static void main(String[] args) { Factory f = new AddFactory(); Operation oper = f.getOperation(); System.out.println(oper.getResult(8, 9)); System.out.println(oper.getResult(4, 6)); System.out.println(oper.getResult(84, 3)); } }
我不知道你看明白没有,我通过简单工厂VS工厂模型有以下感悟:
1、简单工厂的工厂类中包含了具体算法的逻辑判断,客户端只需要知道加、减、乘等就可以得到想要的运算结果,解决了具体算法的创建问题;而且客户端和算法没有什么耦合的地方
2、工厂模式把原本简单工厂的逻辑判断放到了客户端去执行,增加了耦合度;但是工厂模式更好的体现了开放-闭合原则,更加的易于拓展和维护,比如,我现在需要加开根运算,平方运算等等,只需要拓展具体算法和增加算法生成工厂类就可以,完全不会去修改之前的逻辑;而简单工厂则不需要去修改工厂类里面的逻辑判断。如果从这个角度去理解,其实工厂模式也还是降低了客户端与业务的耦合度,只不过要在一定量的前提下才能体现出来。
3、两种模式都有优点和缺点,具体应用要看实际情况而定
大话设计模式之简单工厂读后感(代码片段)
引言:让我们重温经典,致敬经典简单工厂模式:根据调用端传参来有选择的实例化目标对象。UML类图:我们知道简单工厂就是为我们生成我们需要的对象。举个栗子:我们在舞台看表演的时候,一场场表演下来,我们可以总结... 查看详情
大话设计模式之工厂方法模式读后感(代码片段)
引言:让我们重温经典,致敬经典工厂方法模式:定义一个用于创建对象的接口,让子类来决定实例化哪一个类,工厂方法使一个类的实例化延迟到了子类。UML图:1packagecom.dzf.designtest;23/**4*<desc>5*工厂方法:定义一个创建对... 查看详情
工厂方法模式(代码片段)
...迟到其子类。 故事:雷锋依然在人间 小菜班里有个叫薛磊风的同学,大学期间一直在帮助一个老 查看详情
《大话设计模式》——读后感代码无错就是优?——简单工厂模式
本篇是我学习设计模式后的第一篇文章,由于本模式也比较简单,在此我就多啰嗦一下。学习本模式之前请下看一下我的《大话设计模式铺垫》文章,然后回答思考如下问题:1、UML类图看懂了吗?2、java的3大特性真的懂了吗?... 查看详情
设计模式---工厂方法模式
故事背景:雷锋依然在人间概念:工厂方法(FacotryMethod)定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例延迟到其子类。结构图:注意点:(1)工厂方法克服了简单工厂违背开发-封闭原则... 查看详情
《大话设计模式》——读后感商场促销?——策略模式
...对商场促销进行各种各样的打折进行设计案例的,而大话设计模式中还提到: 等等,打折、返现等等一系列促销具体方式 查看详情
《大话设计模式》——读后感(10)无尽加班何时休?——状态模式
原文定义: 状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变其类【DP】 UML结构图: 背景: 看到此模式,酝酿了好久才决定对状态模式进行总结。光看原文定义,实在... 查看详情
《大话设计模式》——读后感老板回来了,我不知道?——观察者模式之理论实例
单独看UML类图,有没有发现观察者类图和工厂方法模式的类图和相似?不过代码实现可不一样哦抽象观察者:packagecom.sjmx.observer.theory;publicinterfaceWatcher{publicvoidupdate(Stringstr);}具体观察者:packagecom.sjmx.observer.theory;publicclassConcreteWat... 查看详情
结构型模式《大话设计模式》——读后感(12)在nba我需要翻译?——适配器模式
适配器模式:将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能在一起工作的那些类可以在一起工作了[DP]UML类图: 简单模拟一下代码://已存在的、具有特殊功能、但不符合我们既... 查看详情
《大话设计模式》读后感
转载:http://blog.csdn.net/u013798619 第一次读《大话设计模式》,是在刚接触C#的时候。疲累于大部头的官方教材中时,无意间翻开了这本生动有趣的书,甚是眼前一亮。由于当时C#基础薄弱,只是把它当小说来看,如饥似渴,饶... 查看详情
《大话设计模式》——读后感(11)简历复印?——原型模式
原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新对象[DP] 说白了,原型模式还是属于创建型模式,主要功能还是创建新对象。下面我自己写一个原型模式试试:案例1:自己写原型接口(Prototy):pac... 查看详情
《大话设计模式》——读后感为别人做嫁衣?——静态代理模式
什么是代理模式: 代理模式结构图: 直接上代码:GiveGift接口:packagecom.sjmx.staticProxy;publicinterfaceGiveGift{voidgiveDolls();voidgiveFlows();voidgiveChocolate();}真实实体:packagecom.sjmx.staticProxy;publi 查看详情
大话设计模式-抽象工厂模式(代码片段)
抽象工厂模式抽象工厂模式提供一个创建一系列相关或互相依赖的接口,而无需再指定他们具体的类。最大的好处是易于交换产品系列,由于具体工厂类在一个应用中只需要在初始化的时候出现一次,这使得改变一个应用的具体... 查看详情
《大话设计模式》——读后感好菜每回味不同——建造者模式之基础案例
建造者模式:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式通常包括下面几个角色:1.builder:给出一个抽象接口,以规范产品对象的各个组成成分的建造。这个接口规定... 查看详情
结构型模式《大话设计模式》——读后感(13)手机软件何时能统一?——桥接模式
桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立地变换【DP】 概述:在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来... 查看详情
《大话设计模式》——读后感好菜每回味不同——建造者模式之经典案例
本文参考地址:http://www.cnblogs.com/xieweikai/p/6826481.html建造者模式应用场景比如在玩“极品飞车”这款游戏,那么每一关的地图会千变万化,简单的来说,地图会有晴天和阴天之分,那么创建地图时就要根据晴天或者阴天来对地图... 查看详情
大话设计模式之策略模式读后感(代码片段)
策略模式:定义了算法家族,分别封装起来,让他们呢之间可以互相的替换,此模式让算法的变化不会影响到使用算法的客户。UML类图:解读:策略模式是定义一系列的算法,从概念上来讲,这些算法完成的工作都是一样的,只... 查看详情
java之抽象工厂模式(大话设计模式)
...们还是要吸取其思想而不是生搬硬套。来看下类图:大话设计模式-类图看类图已经很乱了,来简单的梳理下。我们只看接口,这样就不难看出实际上是抽象工厂生产抽象产品的过程,而具体实现都是各自的实现类来做。看下具... 查看详情