设计模式
linzhuowei0775
这个作者很懒,什么都没留下…
展开
-
设计模式--工厂模式
工厂模式: - 实现了创建者和调用者的分离,实例化对象,用工厂方法代替new操作。将选择实现类、创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。 - 详细分类: 1、简单工厂模式 用来生产同一等级结构中的任意产品。(对于增加新的产品,需要修改已有的代码) 2、工厂方法模式 用来生产同一等级结构中的固定产品。原创 2015-08-02 16:58:14 · 346 阅读 · 0 评论 -
设计模式--建造者模式
建造者模式的本质: 分离了对象子组件的单独构造(由Builder类负责)和装配(由Director负责)。从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况下使用。 由于实现了构建和装配的解耦。不同的构建器,相同的装配,也可以做出不同的对象;相同的构建器,不同的装配顺序也可以做出不同的对象。也就是实现了构建算法、装配算法的解耦,实现了更好的复用。原创 2015-08-06 22:55:43 · 317 阅读 · 0 评论 -
设计模式--观察者模式
场景: - 聊天室程序里,服务器创建好后,A,B,C三个客户端连接上来公开聊天。A向服务器发送数据,服务器端聊天数据改变。我们希望将这些聊天数据分别发给其他在线客户。也就是说,每个客户端需要更新服务器端的数据。这个场景我们可以使用观察者模式来处理。我们可以把客户称之为观察者。需要同步给多个观察者的数据封装到对象中,称之为目标。 核心 - 观察者模式主要用于1:N的通知。当一个对象(目原创 2015-08-15 09:57:51 · 287 阅读 · 0 评论 -
设计模式--模板方法模式
模板方法模式是编程中经常用到是模式。它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定步骤。处理某些流程的代码已经都具备,但是其中某个节点的代码暂时不能确定。因此,我们采用模板方法模式,将这个节点的代码实现转移给子类完成。即:处理步骤父类中定义好,具体实现延迟到子类中定义。 比如,实现一个算法时,整体步骤很固定。但是,原创 2015-08-12 21:21:08 · 335 阅读 · 0 评论 -
设计模式--备忘录模式
场景 — 录入大批人员资料。正在录入当前人资料时,发现上一个人的资料录错了,此时需要恢复上一个人的资料,再进行修改。 — Word文档编辑时,突然电脑死机或者断电,再打开时,可以看到word提示你恢复以前的文档。 核心 — 就死保存某个对象内部状态的拷贝,这样以后就可以将该对象恢复到原先的状态。 结构 — 源发器类Originator — 备忘录类Mement原创 2015-08-15 11:51:07 · 321 阅读 · 0 评论 -
设计模式--中介者模式
场景 假如没有总经理,下面三个部门:财务部,市场部,研发部。财务部要发工资,让大家核对公司需要跟市场部和研发部都通气;市场部要接新项目,需要研发部处理技术、需要财务部出资金。市场部跟各个部门打交道。虽然只有三个部门,但是关系非常乱。 实际上,公司都有总经理。各个部门有什么事情都通报到总经理这里,总经理再通知各个相关部门。这就是一个典型的“中介者模式”,总经理起到一个中介、协调的作用。原创 2015-08-09 20:21:48 · 353 阅读 · 0 评论 -
设计模式--装饰模式
装饰模式职责: — 动态地为一个对象增加新的功能。 — 装饰模式是一种用于代替继承的技术,无需通过继承增加子类就能扩展对象的新功能。使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀。原创 2015-08-08 22:11:51 · 384 阅读 · 0 评论 -
设计模式--享元模式
场景 内存属于稀缺资源,不要随便浪费。如果有很多完全相同或相似的对象,我们可以通过享元模式,节省内存。 核心: 享元模式以共享的方式高效地支持大量细粒度对象的重用。 享元对象能做到共享的关键是区分了内部状态和外部状态。内部状态:可以共享,不会随环境变化而变化。外部状态:不可以共享,会随着环境变化而变化。 比如,围棋软件设计中,每个围棋棋子都是一个对象,有 颜色,形状,大小和位原创 2015-08-09 16:10:43 · 341 阅读 · 0 评论 -
设计模式--责任链模式
定义 将能够处理同一类请求的对象连成一条链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求,如果能则处理,如果不能则传递给链上的下一个对象。 场景 公司里面,请假条的审批过程: 如果请假天数小于3天,主任审批。 如果请假天数大于等于3天,小于10天,经理审批 如果请假天数大于等于15天,小于30天,总经理审批 如果大于等于30天,提示拒绝。 假如,使用i原创 2015-08-09 17:30:38 · 316 阅读 · 0 评论 -
设计模式--组合模式
使用场景 — 把部分和整体的关系用树形结构来表示,从而使客户端可以使用统一的方式处理部分对象和整体对象。 组合模式核心: — 抽象构件(Component)角色:定义了叶子和容器构件的共同点。 — 叶子(Leaf)构件角色:无子节点 — 容器(Composite)构件角色:有容器特征,可以包含子节点。 组合模式工作流程分析: — 组合模式为处理树形结构提供了完美的原创 2015-08-08 16:19:03 · 270 阅读 · 0 评论 -
设计模式--原型模式
原型模式: 通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式。原型模式就是java中的克隆技术,以某个对象为原型,复制出新的对象。显然,新的对象具备原型对象的特点。 原型模式优势:效率高(直接克隆,避免了重新执行构造过程步骤)。 克隆类似于new,但是不同于new。new创建新的对象属性采用的是默认值。克隆出的对象的属性完全和原型对原创 2015-08-07 21:04:30 · 307 阅读 · 0 评论 -
设计模式--桥接模式
生活中场景 -商城系统中常见的商品分类,以电脑为例,如何良好地处理商品分类销售的问题? 我们可以用多层继承结构实现下图的关系。 问题: — 扩展性问题(类个数膨胀问题) 如果要增加一个新的电脑类型:只能手机,则要增加各个品牌下面的类。 如果要增加一个新的品牌,也要增加各种电脑类型的类。 — 违反单一职责原则 桥接模式核心要点: — 处理多层继承结构,处理多原创 2015-08-08 15:15:28 · 307 阅读 · 0 评论 -
设计模式--适配器模式
适配器模式就是将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。 模式中的角色: — 目标接口(Target):客户所期待的接口。目标可以是具体或抽象的类,也可以是接口。 — 需要适配的类(Adaptee):需要适配的类或适配者类。 — 适配器(Adapter) 通过原创 2015-08-07 23:27:32 · 330 阅读 · 0 评论 -
设计模式--单例模式
单例模式的核心作用是保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。 单例模式的优点: - 由于单例模式只生成一个实例,减少了系统性能开销,当一个对象的产生需要比较多的资源时,如读取配置、产生其他依赖对象时,则可以通过在应用启动时直接产生一个单例对象,然后永久驻留内存的方式来解决。 - 单例模式可以在系统设置全局的访问点,优化环境共享资源访问,例原创 2015-08-02 15:34:43 · 331 阅读 · 0 评论 -
设计模式--代理模式
代理模式的核心作用是通过代理,控制对对象的访问,可以详细控制访问某个对象的方法,在调用这个方法前做前置处理,调用这个方法后做后置处理。从而实现将统一流程代码放到代理类中处理。 代理模式的核心角色:原创 2015-08-08 10:41:37 · 320 阅读 · 0 评论