设计模式
LinuxG_G
90年程序员,坐标深圳某IT公司。对新技术充满兴趣,使用的编程语言:C/C++,python, Linux shell;
熟悉常见数据结构及算法,Linux编程,了解java,Android开发。
技能库:
STL, python, 多线程编程, TCP/IP, Linux shell
java, android, 数据库
爱好运动,兴趣比较广泛:basketball,badminton,swim,running等
博客主要用Github 及 csdn,欢迎交流。
联系方式:qq 754860961
展开
-
程序设计的几个基本原则
1) 开闭原则:对扩展开放,对修改关闭;也就是用抽象构建框架,用实现扩展细节2) 单一职责:一个类实现的功能要尽可能单一,避免像一个函数实现两个功能这样的设计(这时最后重构成两个函数)3) 里氏替换原则:不要破坏继承体系,如正方形和长方形类,如果把正方形当做长方形的子类(正方形只需定义一个边长),就不符合里氏替换原则4) 依赖倒置原创 2015-12-12 11:29:26 · 790 阅读 · 0 评论 -
工厂方法(Factory Method)模式
意图: 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。这样,核心工厂类不再负责产品的创建,仅负责为具体工厂类提供必须实现的接口,这样的好处是可以使系统在不修改工厂角色情况下引入新的产品(新增一个具体工厂类即可)解决的问题: 应用类不能预测那个实例子类被实例化,仅知道一个新的对象何时应被创建原创 2015-12-12 11:36:41 · 429 阅读 · 0 评论 -
状态(state)模式
意图:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。适用情形:1) 一个对象的行为取决于它的状态,并且它必须在运行时刻改变它的状态。2) 一个操作中含有庞大的多分支条件语句,且这些分支依赖于对象的状态。这个状态通常用一个或多个枚举常量表示。State模式将每一个条件分支放入一个独立的类中,这使得你可以根据对象自身的情况将对象的状态作为一原创 2015-12-04 20:13:14 · 418 阅读 · 0 评论 -
桥接(Bridge)模式
意图 将抽象部分与它的实现部分相分离,使它们能独立地变化。例子 不同平台上操作对象的代码不一样,如Window系统和OS 系统的界面展示实现;又如游戏机和游戏卡的关系,不同的游戏卡可以播放不同的游戏,但一台游戏机只要有一张卡就行。适用性 你不希望在抽象和它的实现部分之间有一个固定的绑定关系,如在程序运行时刻实现部分应可以被选择或者切换。 类的抽象以及原创 2015-12-12 16:00:07 · 613 阅读 · 0 评论 -
建造者(Builder)模式
意图: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程能够创建不同的表示。也可以通过改变产品的构建过程,从而生成不同的产品。例子: 如KFC中的套餐可分为成人套餐和儿童套餐,成人套餐产品包括:大可,大汉堡,大份薯条等,儿童套餐则包括小可、mini汉堡、小份薯条等。套餐的构建过程一致,但产品不一致。适用性:1) 当创建复杂对象的算原创 2015-12-12 11:45:09 · 375 阅读 · 0 评论 -
访问者(visitor)模式
意图: 表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。Gof给出的例子如下: 考虑编译器的语法分析树,其需要在抽象语法树上实施某些操作以进行“静态语义”分析,例如检查所有变量已经被定义了。同时,它也需要生成代码,因此要定义一些类型检查、代码优化、流程分析等工作。 然而这些操作原创 2015-12-12 11:46:59 · 461 阅读 · 0 评论 -
策略(strategy)模式
目的:把算法封装起来,并且使他们可以相互替换,使得算法可以独立于使用它的客户而变化。适用情景:1、 许多的类仅仅是行为有异(数据一致),”策略”提供了一种用多个行为中的一个行为来配置一个类的方法。2、 需要使用不同的算法,如可以根据不同参数选取不同的效率算法。3、 算法使用客户不应该知道的数据。4、 替换多个if/else或switch语句UML描述:原创 2015-11-29 10:28:05 · 401 阅读 · 0 评论 -
Enterprise Architect之UML实践
Enterprise Architect软件是一款专业的UML绘图软件,常用的图有类图、用例图、顺序图及流程图,均可用其创建。其他用于UML软件还有Rational Rose, StartUml, ArgoUml,JUDE等等。下面开始正文:1.1类图类图中有几种关系需要搞清楚:继承:继承一个类实现:实现一个接口依赖:如果一个对象和另一个对象相关,即作为另一个类的属性,原创 2015-11-29 08:55:17 · 1419 阅读 · 1 评论