IT职涯

一个多年的IT人的博客
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2012年12月5日

摘要: 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们还可以相互替换。策略模式让算法独立于是用它的客户而独立变化。应用场景:多个类只区别在表现行为不同,可以使用strategy模式,在运行时动态选择具体要执行的行为。需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其他方式来实现。对客户隐藏具体策略(算法)的实现细节,彼此完全独立。在网上看到一个鸭子为例的策略模式的文章,说明的是定义了一个鸭子的基类(其中有游泳,叫声和游戏方法),然后有野鸭、红头鸭及橡皮鸭继承这个基类,新的需求是设置鸭子会飞,但是橡皮鸭是不能飞的。解决方案一:基类中加入fly方法,子类都重写,但是这样使得不 阅读全文

posted @ 2012-12-05 14:23 IT职涯 阅读(1014) 评论(0) 推荐(0) 编辑

2012年12月4日

摘要: 状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了他的类。适用场景:一个对象的行为取决于他的状态,并且它必须在运行时根据状态改变它的行为;一个操作中含有庞大的多分支结构,并且这些分支决定于对象的状态。类图:模式的组成:环境类Context: 定义客户感兴趣的接口。维护一个ConcreteState子类的实例,这个实例定义当前状态;抽象状态类State: 定义一个接口以封装与Context的一个特定状态相关的行为;具体状态类ConcreteState: 每一子类实现一个与Context的一个状态相关的行为;实例:push显示红-〉黄-〉绿,pull显示绿-〉黄-〉红public 阅读全文

posted @ 2012-12-04 16:31 IT职涯 阅读(14270) 评论(0) 推荐(0) 编辑

摘要: 命令模式将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。命令模式的本质是对命令进行封装,将发出命令的责任和执行命令的责任分割开,实现二者之间的松耦合。类图:模式结构:Command: 定义命令的接口,声明执行的方法。ConcreteCommand: 命令接口实现对象,通常会持有接受者,并调用接受者的功能来完成命令要执行的操作。Receiver: 接收者,真正执行命令的对象。任何类都可能成为一个接收者,只要它能够实现命令要求的相应功能。Invoker: 要求命令对象执行请求,通常会持有命令对象,可以持有很多的命令对象。这个是客户端 阅读全文

posted @ 2012-12-04 14:30 IT职涯 阅读(3899) 评论(0) 推荐(0) 编辑

摘要: 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤.如果你只想掌握一种设计模式,那么它就是模板方法.类图:抽象模板AbstractClass的方法分为两类:基本方法: 也叫做基本操作,由子类实现的方法,并且在模板方法被调用.模板方法: 可以有一个或几个, 一般是具体方法, 也就是骨架, 实现对基本方法的调度,完成固定的逻辑.为了防止恶意操作,一般模板方法会加上final关键字,不允许被覆写。实例://抽象模板public abstract class AbstractClass{ protected abstract v 阅读全文

posted @ 2012-12-04 12:08 IT职涯 阅读(3795) 评论(0) 推荐(0) 编辑

2012年12月3日

摘要: 观察者模式定义了对象间的一种一对多依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。它将观察者和被观察者的对象分离开。提高了应用程序的可维护性和重用性。实现观察者模式有很多形式,一种是“注册---通知---撤销注册”的形式。观察者Observer:所有潜在的观察者必须实现观察者接口,这个接口只有update方法,当主题改变时,它被调用。具体观察者ConcreteObserver: 具体观察者可以是任何实现了Observer接口的类。观察者必须注册具体主题,一边接收更新。可观察者Subject: 主题接口,即可观察者Observable,对象使用此接口注册为观察者 阅读全文

posted @ 2012-12-03 18:29 IT职涯 阅读(24897) 评论(0) 推荐(0) 编辑

摘要: 迭代器模式有叫做游标(Cursor)模式。GOF给出的定义:提供一种方法访问一个容器(container)对象中的各个元素,而又不暴露该对象的内部细节。迭代器模式由以下角色组成:迭代器角色(Iterator): 负责定义访问和遍历元素的接口。具体迭代器角色(Concrete Iterator):实现迭代器接口,并要记录遍历中的当前位置。容器角色(Container): 负责提供创建具体迭代器角色的接口。具体容器角色(Concrete Container):实现创建具体迭代器角色的接口, 这个具体迭代器角色与该容器的结构相关。类图:实例:public interface Iterator{ pu 阅读全文

posted @ 2012-12-03 14:10 IT职涯 阅读(9094) 评论(2) 推荐(0) 编辑

2012年12月2日

摘要: 原型模式是一种创建型设计模式,它通过复制一个已经存在的实例来返回新的实例,而不是新建实例.被复制的实例就是我们所称的原型,这个原型是可定制的.原型模式多用于创建复杂的或者耗时的实例, 因为这种情况下,复制一个已经存在的实例可以使程序运行更高效,或者创建值相等,只是命名不一样的同类数据.原型模式中的拷贝分为"浅拷贝"和"深拷贝":浅拷贝: 对值类型的成员变量进行值的复制,对引用类型的成员变量只复制引用,不复制引用的对象.深拷贝: 对值类型的成员变量进行值的复制,对引用类型的成员变量也进行引用对象的复制.类图:实例一:浅拷贝public class Prot 阅读全文

posted @ 2012-12-02 00:27 IT职涯 阅读(22977) 评论(0) 推荐(3) 编辑

2012年11月30日

摘要: 建造者模式也叫做生成器模式,将一个复杂的对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示。角色:1. builder抽象建造者: 为创建一个产品对象的各个部件指定抽象接口.2. ConcreteBuilder具体建造者: 实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并提供一个检索产品的接口.3. Director导演:负责安排已有模块的顺序,然后告诉Builder开始建造.4. Product产品类: 表示被构造的复杂对象.通常实现了模板方法模式.类图:实例://Builderpublic interface PersonBuilder { v. 阅读全文

posted @ 2012-11-30 17:17 IT职涯 阅读(1023) 评论(0) 推荐(0) 编辑

摘要: 工厂模式提供创建对象的接口。工厂模式分为三类:简单工厂模式(Simple Factory), 工厂方法模式(Factory Method)和抽象工厂模式(Abstract Factory).GOF在《设计模式〉中将工厂模式分为两类:工厂方法模式(Factory Method)和抽象工厂模式(Abstract Factory)。1. 简单工厂模式(Simple Factory)简单工厂模式又叫做静态工厂方法模式。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。该模式中包含的角色及职责:工厂(Creator)角色:它是简单工厂模 阅读全文

posted @ 2012-11-30 13:45 IT职涯 阅读(9020) 评论(14) 推荐(0) 编辑

2012年11月24日

摘要: 一转眼,已经作了将近一年的Hybris开发,负责前台技术的人只有我一个,所以无论大事小情,什么都要想到。最近前台不再像以前那样繁忙,也要开始做一些后台的开发,虽然之前也接触了一点儿后台,但是主要的solr,cronjob等都没有参与开发,之后可能都要涉猎了,现在总结一下前台的开发。前台开发主要涉及的是模板、组件、页面以及样式,当然controller甚至是后台也都要有所了解,因为有时候需要修改controller或者是判断问题是出在前台还是后台, 不过这些对于我这个做了n多年ERP的人来说,当然都是小菜一碟。前台开发最重要的是沟通、技术以及细心,因为前台team组成比较复杂, 我们是多方开发, 阅读全文

posted @ 2012-11-24 21:47 IT职涯 阅读(4749) 评论(24) 推荐(1) 编辑