
架构设计
Sodaslay
这个作者很懒,什么都没留下…
展开
-
深入浅出设计模式(5)——适配器模式(Adapter)
一、功能 将一个类的接口转换成客户希望的另外一个接口,解决两个已有接口之间不匹配的问题。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 二、结构图 (1)class adapter (2)object adapter三、实现 和其他很多模式一样,学习设计模式的重点是学习每种模式的思想,而不应拘泥于它的某种具体结构图和实现转载 2012-10-09 21:24:44 · 1378 阅读 · 0 评论 -
深入浅出设计模式(20)——Strategy模式
摘要:Strategy模式虽然强大,而且极其常用,但是本身没有任何神秘和高深而言。Strategy模式背后的技术就是多态,背后的思想就是封装变化。封装变化其实还隐藏了一点就是把变化的(Strategy)和不变的(Context)分离。一.上一篇回顾 详细背景去看上一篇好了,这里只给出下面要用到的上下文。我们拥有一个Editable接口和一个Editor接口。一个Editable转载 2012-10-17 18:50:16 · 650 阅读 · 0 评论 -
深入浅出设计模式(21)——Template Method模式
在面向对象系统的分析与设计过程中经常会遇到这样一种情况:对于某一个业务逻辑(算法实现)在不同的对象中有不同的细节实现,但是逻辑(算法)的框架(或通用的应用算法)是相同的。Template Method提供了这种情况的一个实现框架。 Template Method模式是采用继承的方式实现这一点:将逻辑(算法)框架放在抽象基类中,并定义好细节的接口,子类中实现细节。 St转载 2012-10-17 18:55:44 · 726 阅读 · 0 评论 -
深入浅出设计模式(22)——Visitor模式
考虑一下设计一个可以包含长方形、正方形、圆形以及文字的视图类。因为视图中每种元素的显示方式都不一样,所以我们很容易做出如下的设计: 在这里,我使用了COMPOSITE模式。对于COMPOSITE模式,可以参考我那篇《重读《设计模式》之学习笔记(五)--我对COMPOSITE模式的理解》。 现在,我们来分析一下上面的这个设计方案。如果说,由于客户需求的改变,视图中每个元素的显转载 2012-10-17 18:58:15 · 674 阅读 · 0 评论 -
深入浅出设计模式(13)——Chain of Responsibility模式
Chain of Responsibility定义Chain of Responsibility(CoR) 是用一系列类(classes)试图处理一个请求request,这些类之间是一个松散的耦合,唯一共同点是在他们之间传递request. 也就是说,来了一个请求,A类先处理,如果没有处理,就传递到B类处理,如果没有处理,就传递到C类处理,就这样象一个链条(chain)一样传递下去。如转载 2012-10-17 18:26:51 · 586 阅读 · 0 评论 -
深入浅出设计模式(14)——Interpreter模式
一、概述Interpreter(解释器)模式描述了如何为简单的语言定义一个文法,如何在该语言中表示一个句子,以及如何解释这些句子。在这里使用语言这个词似乎将Interpreter模式的应用范围限制到了一个过于狭小的范围,毕竟,我们不是自然语言或者编程语言设计者,需要注意的是,这里所讨论的语言并非指复杂的自然语言或者编程语言,而是一种语义标记,Interpreter模式负责实现这种标记的定义以及转载 2012-10-17 18:29:05 · 640 阅读 · 0 评论 -
深入浅出设计模式(17)——Memento模式
Memento模式也叫备忘录模式,是由GoF提出的23种软件设计模式的一种。Memento模式是行为模式之一,它的作用是保存对象的内部状态,并在需要的时候(undo/rollback)恢复对象以前的状态。Memento模式的概念 Memento模式是行为模式之一,它的作用是保存对象的内部状态,并在需要的时候(undo/rollback)恢复对象以前的状态。转载 2012-10-17 18:37:05 · 615 阅读 · 0 评论 -
深入浅出设计模式(18)——Observer模式
一、Observer模式的意图:在对象的内部状态发生变化时,自动通知外部对象进行响应。二、Observer模式的构成:·被观察者:内部状态有可能被改变,而且又需要通知外部的对象·观察者:需要对内部状态的改变做出响应的对象三、Observer模式的Java实现:Java的API中已经为我们提供了Observer模式的实现。具体由java.u转载 2012-10-17 18:42:48 · 883 阅读 · 0 评论 -
深入浅出设计模式(12)——Command模式
将来自客户端的请求传入一个对象,无需了解这个请求激活的 动作或有关接受这个请求的处理细节。这是一种两台机器之间通讯联系性质的模式,类似传统过程语 言的 CallBack功能。 解耦了发送者和接受者之间联系。 发送者调用一个操作,接受者接受请求执行相应的动作,因为使用Command模式解耦,发送者无需知道接受者任何接口。//Iv_Command.h#pragma once#ifnde转载 2012-10-13 00:19:55 · 710 阅读 · 0 评论 -
深入浅出设计模式(11)——Flyweight模式
Flyweight享元设计模式是一种结构型设计模式,它主要解决的问题是:由于(同类)对象的数量太大,采用面向对象时给系统带来了难以承受的内存开销。比如有这样一个场景:一个停车场中有1000辆汽车,我们所定义的汽车对象占用内存0.3M,那么要实例化1000辆就是300M。由此可见,在这种情况下采用一般的面向对象方式出现了大量细粒度的对象会很快充斥在系统中,从而带来很高的运行是代价(这里指的代价是内存转载 2012-10-11 18:44:40 · 652 阅读 · 0 评论 -
深入浅出设计模式(19)——State模式
“标准示范”就是刚刚上边列出来的if…else if…else…语句,这样的语句大多被用来判断提交了什么动作,然后处理的。当然,需求是在不断变化中的,每当新加了一个业务的提交处理的时候,怎么办呢?绝大多数人的选择都是在最后一个else if的后面,else的前面,添加一个else if…,^_^,如此处理。长此以往,一段程序或许本来就有n个else if,然后维护又加了n个,本来2000行的函数,转载 2012-10-17 18:46:36 · 864 阅读 · 0 评论 -
深入浅出设计模式(16)——Mediator模式
一、中介者模式简介(Brief Introduction)中介者模式(Mediator Pattern),定义一个中介对象来封装系列对象之间的交互。中介者使各个对象不需要显示地相互引用,从而使其耦合性松散,而且可以独立地改变他们之间的交互。Define an object that encapsulates how a set of objects interact. Mediator p转载 2012-10-17 18:34:25 · 776 阅读 · 0 评论 -
深入浅出设计模式(3)——生成器模式(Builder)
一、概述在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法确相对稳定。如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的“稳定构建算法”不随着需求改变而改变?这就是要说的建造者模式。 建造者模式可以将一个产品的转载 2012-10-09 21:07:54 · 780 阅读 · 0 评论 -
深入浅出设计模式(7)——Bridge模式
概述 Bridage 模式就是把抽象部分和它的实现部分分离开来,让两者可独立变化。这里的抽象部分指的是一个概念层次上的东西,它的实现部分指的是实现这个东西的(功能)部分,分离就把实现部分从它要实现的抽象部分独立出来,自我封装成对象。 桥梁模式:将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将他们之间的强关联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合转载 2012-10-10 22:22:14 · 731 阅读 · 0 评论 -
深入浅出设计模式(4)——Prototype模式
作用:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。抽象基类:1)Prototype:虚拟基类,所有原型的基类,提供Clone接口函数接口函数:1)Prototype::Clone 函数:纯虚函数,根据不同的派生类来实例化创建对象.解析:Prototype模式其实就是常说的"虚拟构造函数"一个实现,C++的实现机制中并没有支持这个特性,但是通过转载 2012-10-09 21:16:49 · 470 阅读 · 0 评论 -
深入浅出设计模式(6)——Composite模式
一 意图 将对象组合成树形结构以表示“部分——整体”的层次结构。Composite使得用户对单个对象操作和组合对象的操作使用具有一致性。二 动机 绘图编辑器和图形捕捉系统图形应用程序中,总是存在简单的图形到简单的组件再到复杂的组件,但他们在本质上都是图形(各种基本的图形组合或者递归组合)。这可以分成两个部分:基本图元和组件图形。对于基本的图元可以单独定义类;对于组件图形可以转载 2012-10-10 22:15:37 · 506 阅读 · 0 评论 -
深入浅出设计模式(10)——Facade模式
Facade模式要求一个子系统的外部与其内部的通信必须通过一个统一的Facade对象进行。Facade模式提供一个高层次的接口,使得子系统更易于使用。 就如同医院的接待员一样,Facade模式的Facade类将客户端与子系统的内部复杂性分隔开,使得客户端只需要与Facade对象打交道,而不需要与子系统内部的很多对象打交道。 Facade的几个要点转载 2012-10-11 18:39:57 · 642 阅读 · 0 评论 -
深入浅出设计模式(8)——Proxy模式
一、Proxy模式定义: 为其他对象提供一种代理以控制这个对象的访问。二、模式解说 Proxy代理模式是一种结构型设计模式,主要解决的问题是:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象转载 2012-10-11 18:29:24 · 598 阅读 · 0 评论 -
深入浅出设计模式(9)——Decorate模式
1、一个原则 类应该对扩展开放,对修改关闭 2、定义装饰者模式装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。 1. Component就是装饰器模式中公共方法的类,在装饰器模式结构图的顶层。2. ConcreateComponent是转换器模式中具体的被装饰的类,IO转载 2012-10-11 18:36:05 · 1560 阅读 · 0 评论 -
深入浅出设计模式(2)——工厂和抽象工厂(Factory/Abstract Factory)
在软件系统中,经常面临着“某个对象”由于需求的变化,对象的具体实现面临着剧烈的变化。为了应对这种变化我们抽象出它比较稳定的接口,隔离出“这个易变对象”的变化,从而保持系统中“其它依赖该对象的对象”不随着需求的改变而改变,这就是要说的Factory Method模式了。定义一个用户创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。简单工厂:转载 2012-10-09 20:59:48 · 706 阅读 · 0 评论 -
深入浅出设计模式(15)——Iterator模式
首先来看看概念:Iterator模式可以顺序的访问一个聚集中的元素而不必暴露聚集的内部表象。优点:1 简化了聚集的节目。迭代子具备了遍历的接口,这样聚集的接口就不必具备遍历接口2 每一个聚集对象都可以有一个或者跟多的迭代子对象,每一格迭代子的迭代状态可以使彼此独立的(外禀迭代子)。3 由于遍历算法被封装到迭代子对象中,因此迭代算法可以独立于聚集对象变化。客户端不必知道聚转载 2012-10-17 18:31:43 · 559 阅读 · 0 评论 -
微信 Android 模块化架构重构实践
原文地址:微信Android模块化架构重构实践微信Android诞生之初,用的是常见的分层结构设计。这种架构简单、清晰并一直沿袭至今。这是微信架构的v1.x时代。图1-架构演进到了微信架构的v2.x时代,随着业务的快速发展,消息通知不及时和Android 2.3版本之前webview内存泄露问题开始突显。由于代码、内存、apk大小转载 2017-06-30 17:22:31 · 2343 阅读 · 0 评论