`
文章列表
很多人采纳别人好的建议以后,往往忘记提起给你推荐建议的人。有些人则是有心的,让人觉得这是他自己的建议(说难听点就是抢别人的功劳);而有些人则是无心的或者根本就忘记了给你推荐意见的人。   无论是有心(有违道义)还是无心,请不要忘记提起给你好建议的人,这其实是对推荐人的肯定和鼓励,这样你才能听到更多好的建议,才会有更多的人来帮助你。
装饰者模式:动态的将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。   装饰者模式类图 装饰者模式的关键点 装饰者与被装饰者必须是一样的类型,即他们有同样的超类型。   ConcreteComponentA想要装饰ConcreteComponentB及其子类,ConcreteComponentA中必须有一个ConcreteComponentB的引用,而ConcreteComponentB及其子类都是Component的实现类,因此,ConcreteComponentA中只需要引用Component即可。如果仅从这个程度上来说,完全是策略模式的模 ...
观察者模式:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖着都会收到通知并自动更新。   基于“推”的观察者类图   基于“推”的Java事件监听器的观察者模式应用   当两个对象之间松耦合,它们依然可以交互,但是不太清楚彼此的细节。 观察者模式提供了一种对象设计,让主题和观察者之间实现松耦合。主题只知道观察者实现了某个接口(Observer接口),却不知道观察者的具体类是谁、做了些什么或者其他任何细节。   不要依赖于观察者被通知的次序 一旦观察者/可观察者的实现有所改变,通知次序就会改变,很可能就会产生错误的结果。这绝对不是我 ...
一个良好的OO设计必须具备可复用性、可扩展性、可维护性。   什么样的设计才是一个可复用性比较高的设计? 高内聚。我们把散落到各地的重复代码,都扫到一起,把他封装起来,通过职责的划分,将他们归类。单一职 ...
策略模式:定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。   策略模式类图: 策略模式与设计原则: 封装变化 把会变化的部分取出来并封装起来,以便以后可以轻易的改动或者扩展此部分,而不影响不需要变化的其他部分。(找出应用中可能需要变化的部分,把他们独立出来,不要和那么不需要变化的代码混在一起)。   针对接口编程,而不是针对实现编程 这里所谓的接口,是指广义的接口,而非狭义的JAVA接口。泛指针对“超类型的编程”   多用组合,少用继承 组合与继承是复用的两个常用的方法。 组合:我们把职责独立出专门的类 ...
在源代码编写中,用这么一种情况:编码者在写源代码的时候,使用了一个数字,比如0x2123,0.021f等,他当时是明白这个数字的意思的,但是别的 程序员看他的代码,可能很难理解,甚至,过了一段时间,代码的作者自己再看代码的时候也忘记了这个数字代表的含义.于是感叹,虽然不知道这个数字是干什么用的,究竟代表什么,但是编译后的程序可以正常运行,真是"魔术般的数字"啊,magic number 即源于此.magic number的这个含义跟上一个不同,这个通常含贬义.因为在编程中使用magic number是不好的习惯,开发中应当尽量避免.   magic number 的 ...

API设计

一、优秀的API具有哪些特征: 1、易学易记; 2、可读性高; 3、不容易用错; 4、容易扩展; 5、具有完整性:用户通过API能去做想做的事情,但是这是比较困难的。即便如此,至少也应该方便扩展和定制化(例如通过继承等等)。当然,设计一个完整的API这可能需要一个过程,但起码得保证有一个清晰的设计思路,或者在朝着正确的方向迈出的一步,因为并不是每一个API从最开始就是很完美的。   二、设计过程 1、了解需求 在 设计 或 实现 一个API之前 ,你应该有一个 good idea of the requirements。 有时, 需求 相当明确 ...
Python 使用对象模型来存储数据。构造任何类型的值都是一个对象。   对象的三个特性 1、身份:可以通过内建函数id()来得到对象唯一的身份标识。这个值可以被认为是该对象的内存地址。 import logging print id(logging) #输出:12054096        2、类型:对象的类型决定了该对象可以保存什么类型的值,可以用内建函数type()查看Python 对象的类型。 name = 'zhangsan' print type(name) #输出:<type 'str'> 因为在Python 中类型也是对象,所以 ...
必须知道的 1、注释用#表示 2、反斜杠(\)继续上一行 3、语句结束可以不用分号,两个语句连接在一行用分号 4、语句块用缩进的方式 5、让python支持中文,请在文件头加入以下内容: #-*- encoding: utf-8 -*-   变量赋值 python ...
Windows安装: 版本:2.5 官网:GoGo 中文社区:GoGo   Python下载后不会将执行程序加入到环境变量中,如果有需要,需要自己配置环境变量到path下   开发工具: IDLE:安装自带,在%YOUR_PYTHON_HOME%\Lib\idlelib目录下idle.pyw,可用快捷方式链接。 PyDev :Eclipse插件 DOWNLOAD   安装PvDev: 如果下载的是类似PyDev 2.2.4.zip这样的包,可以直接解压覆盖到Eclipse的安装目录即可,或者也可以用你一贯安装插件的方式安装。然后重启Eclipse ...
其实说到这里,只是想说IT的最终目标。所以说如果脱离目标只谈IT本身,那么结果要么就是很迷茫,要么就是偏离正确方向。同理,一个架构师如果不了解业务系统,不明确业务目标,不了解商业价值,看不清行业的发展方向,那么他设计的系统就会有很大的局限性。 我们知道,好的设计需要具备可复用性、可维护性与可扩展性。而这三个特性又包括从业务服务级别的可复用性、可维护性、可扩展性到系统组件级别,最后到代码级别的可复用性、可维护性、可扩展性,依次从高到低。很长一段时间内,我只看到从代码级别到系统组件级别的这一部分,而没有看到从业务服务级别的这三个特性。直到前一段时间在工作中,我将一个入账的流程设计成一个还款的流程时 ...
生活中不缺乏和自己观点不一样的声音,那是因为人的自身修养和知识结构本身是具有差异性的。   当在我们工作和生活中听到或者看到一些不一样的声音或者行为的时候,请多一份理性。   并不是每一个人都能虚心接受别人的意见,但每一个人都希望能得到别人的肯定(起码不会排斥)。   感性与无知不是不可原谅的,知性与理性也不是值得炫耀的。三人行必有我师!   少一些批评,多一些褒奖。少一些锋芒,多一份和谐,以谦虚平和的心态去跟人交流沟通。    
工作中,我们总是能听到很多关于各种各样的抱怨声。   既然有抱怨,说明有问题。有问题是好事,发现问题不是目的,解决问题才是问题所在。其实这不奇怪,奇怪的时候经常同样的问题会一直抱怨,而且这些问题并不是不能解决的。既然不是不能解决的问题,为什么首先想到的不是去解决问题?   当我们发现问题的时候,请不要在第一时间去抱怨,而是去思考解决问题的办法。事后再去总结经验教训,少一些抱怨声,多一些执行力。
Global site tag (gtag.js) - Google Analytics