11 2016 档案
摘要:定义 命令模式:将请求封装成对象,以便使用不同的请求、日志、队列等参数化其他对象。命令模式也支持撤销操作 uml 代码实现
阅读全文
摘要:UMl类 代码实现 问题 访问者可可以用于任何对象集合 外部化操作可能破坏封装,例如给TextdumpArmyVisitor对象提供信息,我们被迫给Unit接口提供了一个额外的方法
阅读全文
摘要:问题 如果类的相关操作需要根据环境变化而变化,那么可能会需要将类分解为子类,但是如果通过继承数创建多个子类的话就会产生一些问题,导致继承树体系中的每个分支中相关操作重复。当类必须支持同一个接口的多种实现时,最好的办法就是提取这些实现,并将他们防止在自己的类型中,而不是通过继承原有的类去支持这些实现。
阅读全文
摘要:uml 代码实现 问题 创建解释器模式的核心类后,解释器很容易扩展。但是语言变得复杂是,需要创建的类的数量会很快增加。因此解释器模式适用于相对小的语言,如果需要一个全能的编程语言,最好使用第三方工具。
阅读全文
摘要:问题 当使用子系统的代码是,有时候发现自己过于深入的调用子系统的逻辑代码,如果子系统代码总是不断变化,而你的代码缺又在许多不同地方与子系统代码交互,那么随着子系统的发展,代码越来越维护困难,外观模式要解决的就是使系统中的各层互相独立,以便项目中某一部分的修改尽量不影响其他地方。 代码实现 效果 分离
阅读全文
摘要:引言 组合模式帮组我们聚合组件,装饰模式则使用类似节后来帮组我们改变具体组件的功能 问题 将所有功能简历在集成体系上会导致系统中的类“爆炸式”增多,当你尝试对集成书上不同的分支做想死的修改是,代码可能会产生重复 uml图 代码实现 效果 组合和继承通常都是同时使用的,因此logrequest是继承自
阅读全文
摘要:uml 代码实现 效果 组合模式的简化有时会降低对象类型的安全为代价,模型变得越复杂,就不得不手动进行越多的类型检查 组合模式的操作成本很大,解决办法是在父级对象中缓存计算结果,使接下来的调用减少系统开销 在对象持久化上,虽然组合模式是一个优雅的模式,但是他并不能将自身轻松的存储到关系型数据库里,适
阅读全文
摘要:问题 在大型应用中,需要工厂来生产一组相关实现的架构 uml 代码 结果 将系统与实现的细节分开,可以在示例中添加或删除任意数目的编码风格而不会影响系统 对系统中功能相关的的元素强制进行组合。因此通过使用Blogscommonmanager可以确保只使用与BlogsCal相关的类 添加新产品非常麻烦
阅读全文
摘要:问题 当代码运行时我们才知道要生成的对象类型(BlogApptEncoder或者MegaBlogApptEncoder) 我们需要能够相对轻松的加入一些新的产品类型(如一种新业务处理方式SyncMl) 每一个产品类型都可定制特定的功能(getHeaderText()和getFooterText())
阅读全文
摘要:单例模式 preferences对象应该可以被系统中的任何对象使用 preferences对象不应储存在会有被复写的全局变量中 系统中只能有一个preferences对象 单例可能被无用,因为单例在系统任何地方都能被访问,可能导致很难调试的依赖问题 单例对象的全局化性质会导致程序员绕过类接口定义,导
阅读全文
摘要:类函数和对象函数 类函数和对象函数 get_class(obj) 检测对象的类,返回字符串类型的类名 instanceof is_subclass_of 反射API 反射API
阅读全文
摘要:声明关键字 static 作用域 静态方法以类为作用域,不能访问累的普通属性,但是允许访问静态属性,类的所有实例都允许访问静态属性(权限允许下) 访问方式 通过‘::’符号访问,当前类访问自己的静态属性和方法通过self关键字,类的实例不允许访问方法内部含有this关键字的静态方法 作用 它在代码中
阅读全文