随笔分类 - 设计模式
摘要:定义一个操作中的算法骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤 应用场景: A.操作步骤稳定,而具体细节延迟到子类. UML: 示例代码: 所有的商品类在用户购买前,都需要给用户显示出最终支付的费用.但有些商品需要纳税,有些商品可能有打折
阅读全文
摘要:运用共享技术有效的支持大量细粒度的对象. 应用场景: A.减少对相同对象的重复创建 UML: 示例代码:如果在工厂中,有用户,我们就直接调用,没有用户,我们就获取.减少对同一uid的user对象的重复创建.
阅读全文
摘要:将对象组合成树形结构以表示整体-部分的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性. UML: 示例代码:透明组合:叶节点和子节点具有相同的接口 示例代码:安全组合:接口中不强制实现增加和删除节点,叶节点不具备该两项功能.
阅读全文
摘要:将抽象的部分与实现的部分分离,使它们都可以独立变化.抽象与实现的分离,指的是抽象类和派生类用来实现自己的对象.实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来,让他们独立变化,减少他们之间的耦合. 合成/聚合复用原则:尽量使用合成/聚合,尽量不要使用类继承.聚合是一种弱拥
阅读全文
摘要:动态的给一个对象添加额外的一些职责,就增加功能而言,比继承更具灵活性. 如果仅有一个ConcreateComponent,也可以让Decorator继承ConcreateComponent来实现装饰功能,尽管这看起来很像适配器.但区别主要是语义上的. 何时使用:1.为已有对象动态添加更能多功能.2.
阅读全文
摘要:为其他对象提供一种代理以控制对这个对象的访问. 使用场合: 1.远程代理:为一个对象在不同的地址空间提供局部代表,隐藏对象存在于不同地址空间的事实.2.虚拟代理:根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象.3.安全代理:用来控制真实对象访问时的权限.4.智能指引:当调用真实
阅读全文
摘要:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 什么时候使用:1,开发阶段,子系统越来越复杂,增加外观模式提供一个简单的调用接口。2,维护一个大型遗留系统的时候,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,为其开发一个外观类,以
阅读全文
摘要:将一个类的接口转换为用户期望的另外一个接口.适配器使得原本由于接口不兼容而不能一起工作的类可以一起工作 UML: 一.类适配器: 二.对象适配器: 三.接口适配器 要求现有类ExistClass适配接口DemoInterface
阅读全文
摘要:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 应用场景:A.一个无状态的类使用单例,可以节省内存B.全局或配置类(其实这个也是无状态的)C.脚本或程序从运行开始到结束,仅需要一个实例来保证数据或条件的一致性(数据库连接,如user类的积分数据),注意这是在单线程模式下,多线程模式下是要处理
阅读全文
摘要:用原型实例指定创建对象的种类,并且拷贝这些原型创建新的对象.应用场景: A.用new创建对象通常有较为复杂的数据准备或权限准备B.对象较大,拷贝对象可以节省内存 UML图:
阅读全文
摘要:将一个复杂对象的创建与表示分离,使得同样的构建过程可以创建不同的表示. 应用场景: A.创建这个对象通常需要较多的参数,才能完整的表示该对象.B.类的各个组成部分的具体实现类或算法经常面临变化,但将他们组合在一起却相对稳定,提供一种封装机制 将稳定的组合算法于易变的各个组成部分隔离开来.C.不同的创
阅读全文
摘要:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 应用场景: 一系列相互依赖的对象有不同的具体实现。提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合 UML: 代码示例: ps:与工厂方法相比,抽象工厂的接口中包含了所有产品的创建.
阅读全文
摘要:最常用的实例化对象模式,用工厂方法替代了实例化对象. 应用场景:A.一个类的子类经常面临着剧烈变化,但却拥有较稳定的接口,或者说拥有相同的接口.工厂方法定义一个用于创建对象的接口,让子类来决定创建那个对象,将对象的实例化延迟.B.如给定一张图片,生成对应的图片并添加水印.图片格式有png,jpg等,
阅读全文
摘要:一.创建型模式(解决对象的创建) 创建型模式抽象了实例化过程.它们帮助一个系统独立于如何创建/组合和表示它的那些对象.一个类创建模式使用继承改变被实例化的类,一个对象创建型模式将实例化委托给另一个对象. 特点:它们都将关于该系统使用哪些类封装起来.它们都隐藏了这些类的实例是如何被创建和放在一起的.整
阅读全文
摘要:数据访问对象模式 该设计模式描述了如何创建提供透明访问任何数据源的对象.
阅读全文
摘要:一.单一职责: 不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 我们最开始设计了一个类Human,我们赋予了四项功能.以下是伪代码: 二.里氏替换原则: 所有引用基类的地方必须能透明地使用其子类的对象,也就是说子类可以扩展父类的功能,但不能改变父类原有的功能 三.依赖倒置: 高
阅读全文
浙公网安备 33010602011771号