自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 Iterator Pattern

对于一群类型相同的对象集合,其存储方式可以是多种多样的数据结构,如数组、列表等,他们对集合具体操作不同,但是可以通过iterator接口来统一他们的操作。对于用不同数据结构的集合A和B,若要统一遍历他们的各个项,先让他们分别实现Iterator接口,实现各自的next()和hasnext()函数,然后在他们的类中定义一个返回迭代器的函数CreateIterator(){return new...

2014-10-12 11:10:51 98

原创 模板类模式

如果希望父类中的方法不能被子类所覆盖,用final关键字  对于若干个方法,取出相同的子方法,将不同的子方法进行泛化,封装在新的模板类(是个抽象类)中,不同的子方法规定为abstarct的,在子类中去实现它。还可以在模板类中加入一个hook(钩子),这个方法可以作为条件控制,影响抽象类的算法流程,如决定是否要执行加入调料的步骤,可以征求客户的请求。即当步骤方法是可选的时候,用钩...

2014-10-10 19:31:54 121

原创 Adapter——适配器模式和外观模式

适配器模式是将一个接口转化为另一个接口,以达到客户的要求。具体[color=indigo][size=small]方法[/size][/color]是适配器实现(implement)目标接口,在适配器中[color=blue]组合[/color]adaptee(被适配者),将适配器中的其他动作[color=red]委托[/color]给adaptee。[color=cyan]优点是adaptee的...

2014-10-10 11:00:03 127

原创 单件模式

一个类只有一个实例,并且该类的构造函数私有,但是该类提供一个可以获得实例的一个静态方法,另外还需要一个静态变量。组合也叫[color=darkred]引用[/color]...

2014-09-29 14:32:04 137

原创 拖延创建对象的工厂模式

例子,pizza的生产模式1.平行的类层级,如Pizza类和PizzaStorte这两个抽象类,他们的子类都有特定的实现。所谓实现一个借口,指的是实现超类型的(类或接口)中的一个方法。在PizzaStore中有create和order两个方法,这两个方法将由子类决定的可变部分(create部分,在父类pizzastore中是抽象的,在派生类中实现,如在NYpizzastore中实现)和公共部分...

2014-09-29 10:50:45 148

原创 神奇的装饰着模式Decorator

1.强大的类能够对扩展开发,对修改关闭,即所谓的开发--关闭原则,这样的设计更有弹性,可以应对改变,接受新的功能。2[color=red].组合,委托,实例化行为类。[/color],[color=red]和继承相比的优点是,子类的职责可以不在修改原来代码的前提之下、不局限于父类的方法和限制,增加多个新职责。[/color]2.一个经典的例子,我们以饮料为主体,然后在运行时以调料来装饰饮料...

2014-09-26 10:50:55 117

原创 Observer模式14.9.24

1.主题和观察者之间,主题只会发送通知给所以实现了观察者接口的对象,是一对多的联系。当一个对象改变状态时,它的所有依赖者都会受到通知并且自动更新。观察者接口提供了一个由主题(java内置中叫做可观察者observable,同样的意思)调用的方法update().2.观察者模式实现原理;可观察者和诸多观察者内有可变数据(其中观察者只有自己想要了解的数据),可观察者和诸多观察者存在一对多的关系,每...

2014-09-24 15:22:00 80

原创 Strategy模式(2014-9-23)

策略模式,即[color=red]行为类[/color]的使用,用一个类去诠释一个行为。这样当实体类需要行为时,通过它的行为类实例(行为类实例是它的数据成员)来进行委托。这种实体类和行为类的结合使用叫做组合。多用组合,少用继承,这是个很重要的技巧,这样系统会有很大的弹性。针对接口编程,不要针对实现去编程。模式设计的学习,它是对问题的通用解决办法。对于具体的类,只在它的构造函数之...

2014-09-23 19:36:05 101

原创 2014.9.21

1.迭代器,用于遍历容器(比如vector和数组等)和string,有begin()和指向最后一个元素的后一个位置的end();2.数组指定大小,vector大小可变,但是不允许在[color=red]范围for循环内[/color]改变vector的容量大小,因为这样会使迭代器失效,失效是违法的。3.指针是数组的迭代器,和数组关系精密。若有数组a[10]表现在: (1)告诉我们数组...

2014-09-21 15:49:52 97

原创 2014.9.19

1.变量的声明和定义。声明是让名字为程序所知,规定了类型和名字,而定义则还申请了空间。变量只能被定义一次,但可声明多次。只想声明不想定义用extern.2.作用域问题。对于for循环而言,定义在for语句内的i只能在该语句内被调用,最好用{},之外可能有误,其他地方无法访问。对于变量的定义,习惯在用到的时候定义它。 对于全局变量,或者其他地方的变量可以用::3.对象指的是能够存储数据...

2014-09-19 15:06:08 102

原创 c++注意点

1.关于运算符重载,是在类的基础上新的定义和实现,是为了实现多态性,主要通过成员函数和友元函数来实现。对于单目运算符用成员函数,对于对象和数之间的预算,采用友元函数。2.数据结构是把一组相关数据元素组合在一起的策略和方法,多态性则是指相同的名字的函数,具有不同的功能。3.strcpy()函数用于字符数组,不能用于string对象,因为对象之间可以直接=。4.c++中新定义的整数数组必须...

2014-09-18 14:36:10 114

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除