随笔分类 - 设计模式
设计模式总结
摘要:复杂的软件必须有清晰合理的架构,否则无法开发和维护。MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用。它本身很容易理解,但是要讲清楚,它与衍生的 MVP 和 MVVM 架构的区别就不容易了。昨天晚上,我读了《Scaling Isomorphic Javas...
阅读全文
摘要:前言"Architecture is About Intent, not Frameworks" -Robert C. Martin (Uncle Bob)Uncle Bob 的这句话套在 MVVM 上也是适用的, MVVM 也仅仅是架构模式(Architectural pattern),其有一套自...
阅读全文
摘要:场景: 福尔摩斯一直想送礼物给花生,但是羞于直接赠送,于是想到让房东太太去帮忙送礼物.编程如何实现呢?定义: 为其他对象提供一种代理以控制对这个对象的访问。角色:Proxy:代理对象.有下列功能:实现与具体的目标对象一样的接口,这样就可以使用代理来代替具体的目标对象。持有一个具体目标对象的引用...
阅读全文
摘要:场景: 构建一个部门管理和人员管理的模块.比如一个部门可以有多个人,一个人可以属于多个部门。 现增加一些功能: 1.部门被撤销,就需要通知清除这个部门下面的所有人后再删除部门. 2.部门之间合并,需要把原来的两个部门撤销,新增一个新部门,将原来两个部门的人员归入新部门中. 3.人...
阅读全文
摘要:场景: 一个订单系统,里面有一个保存订单的业务功能。具体需求:每当订单的预订产品超过1000的时候,需要把订单拆分成两份订单。如果拆分成两份后还是超过1000,则继续拆分。订单类型分为个人订单和公司订单,不管是什么类型的订单,都要能够正常地处理.抽象的描述下就是已经有了某个对象实例后,如何能够快...
阅读全文
摘要:场景: 考虑导出数据的应用框架,通常在导出的数据形式上有一定的约定方式,对于不同的输出格式,处理步骤都是一样的,但是每步的具体实现是不一样的,像导出成TXT和EXCEL的文本形式不一样,但是导出的数据都会分为文件头,文件体和文件尾.所以应该将处理步骤导出文件头,导出文件体,导出文件尾这几个固定步骤...
阅读全文
摘要:场景: 考虑组装电脑,客户需要自己选择一系列的电脑配件,组装电脑的公司需要根据客户所选择的的配件去组装.但这样会有一个问题,如果客户了解CPU和主板的兼容配置还好,万一选了俩个不一样的则会出现错误,该争么样防止客户选错呢?这就需要组装电脑的公司提供给客户一些参数,像多套兼容的CPU和主板配置,客户...
阅读全文
摘要:考虑一个场景:某公司需要使用文件导出系统将某些数据打包到服务器上,但是现在还不知道打包的方式和文件的类型。也即只知道有导出这样一个接口,但不知道具体实现。客户端只需要调用抽象的接口对象中的方法,而不用关心具体实现。定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法模式使一个类的实例...
阅读全文
摘要:单例非常简单,只说下一些值得注意的地方。模式一:懒汉式需要的时候在初始化,时间换空间,每次获取实例都去判断是否需要创建实例.非线程安全。package com.kris.study;public class Singleton { private static Singleton instan...
阅读全文
摘要:场景: 系统升级后,定义了一套新的接口逻辑,但是希望新的接口能兼容旧的功能,比如有些用户没有升级新版本,还是使用旧的接口和功能. 类比原来的插头和插孔是两箱的,现在插孔换成或者叫定义成了三箱,这样三箱的插头才可以使用,原来两箱的需要用一个转换器或者叫适配器将两箱转成三箱,这样就可以继续使用....
阅读全文
摘要:场景: 当客户端访问一个子系统中的多个子模块的方法时,既能简单的使用这些子系统内部的模块功能,而又不用客户端去与子系统内部的多个模块交互. 比如举办一个会议,需要首先预约时间,然后准备会议室,接着就是开会,最后是总结会议成果。如果没有助理,这些事情我都要自己去一个一个亲自去准备,并且必须...
阅读全文
摘要:场景: 服务端编写API方法供客户端调用,需要将接口与实现分离,客户端不需要知道具体实现,高度解耦,面向接口的编程。定义: 提供一个创建对象实例的功能,而无须关心其具体实现,被创建实例的类型可以是接口,抽象类,也可以是具体的类。类比就像我们去工厂进货,但是不知道具体货物是如何产生的,可能从...
阅读全文
摘要:观察者模式定义:定义一个对象间的一对多的依赖关系。当一个对象的状态发生改变,所有依赖于它的对象都得到通知并被自动更新。Subject :目标对象一个目标对象有多个观察者观察提供观察者的添加和删除维护目标发生变化时通知所有的观察者Observer:观察者的接口,提供目标通知时对应的更新方法Concre...
阅读全文
摘要:重新开始写博客 之前的JAVA博客一直没更新,一直忙,连地址都忘了,现在下定决心重新拾起。一边学习android 一边温习java基础。现在明白忙只是借口,真正的原因是因为太懒了,肯定能挤出时间学习总结,至少每周末会写一到两篇学习总结,下定决心坚持下来,恩,为自己加油。---------------...
阅读全文

浙公网安备 33010602011771号