- 博客(22)
- 资源 (3)
- 收藏
- 关注
原创 设计模式之职责链
一、作用 避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。职责链模式是一种对象行为型模式。 二、例子 class PurchaseRequest { private String purpose; //采购目的 public PurchaseRequest(String p
2015-03-24 08:34:35 363
原创 设计模式之桥接模式
一、作用 将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。 二、例子 interface Implementor { public void operationImpl(); } abstract class Abstraction { protected Im
2015-03-23 20:30:09 290
原创 设计模式之建造者
一、作用 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。 二、例子 class Actor { private String type; //角色类型 private String sex; //性别 private String face; //脸型
2015-03-23 20:22:26 289
原创 设计模式之策略模式
一、作用 定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换,策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。 二、例子 //电影票类:环境类 class MovieTicket { private double price; private Discount discount; //维持一个对抽象折扣类的引用 publi
2015-03-23 20:12:44 299
原创 设计模式读书感悟
一、设计模式是现成的解决某类问题的初步方案。 二、从中要体会到如何构造一个完美的系统。(如何牵引系统,如何分类功能) 三、设计模式是要构造一个对修改关闭,对扩展开放的系统。
2015-03-20 21:18:08 453
原创 设计模式之状态模式
一、作用 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其别名为状态对象(Objects for States),状态模式是一种对象行为型模式。 二、例子 //状态抽象类 abstract class State { public abstract void do(); } //具体状态类,每个状态对应一个类 class Conc
2015-03-20 21:09:54 262
原创 设计模式之命令模式
一、作用 将一个请求封装为一个对象,从而让我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式是一种对象行为型模式,其别名为动作(Action)模式或事务(Transaction)模式。 二、例子 //命令接收者 abstract class Command { public abstract void execute();
2015-03-20 08:59:08 299
原创 设计模式之装饰模式
一、作用 动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。装饰模式是一种对象结构型模式。 二、例子 class Decorator { private Component component; //维持一个对抽象构件对象的引用 public Decorator(Component component)
2015-03-19 21:10:17 394
原创 设计模式之适配器模式
一、作用 将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。 二、应用场景 在不改变原有系统的基础上,增加适配器以适应客户端的需求。 三、例子 class Wrapper extends Target { private OtherClass o; //维持一个对适配者对象的引用
2015-03-19 08:45:09 258
转载 系统质量分析指标
扩展性:一个系统设计方案能够被扩展的程度。(Expandability: The degree to which the design of a system can be extended.) 简洁性:一个系统设计方案易于理解的程度。(Simplicity: The degree to which the design of a system can be understood e
2015-03-17 20:31:51 681
原创 设计模式之工厂模式
一、作用 定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。 二、与抽象工厂的区别 工厂模式能创建一个单一的产品簇,而抽象工厂可以创建一组产品簇,抽象工厂是工厂模式的进一步扩展。 三、例子 //抽象产品角色 public interface Car{ public void drive(
2015-03-17 20:20:11 260
原创 设计模式之抽象工厂
一、作用 提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。它是一种对象创建型模式,分类创建一组类。 二、例子 //按钮接口:抽象产品 interface Button { public void display(); } //Spring按钮类:具体产品 class SpringButton implements Button {
2015-03-17 19:52:40 303
原创 设计模式之模板方法模式
一、作用 定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 二、例子 abstract class AbstractClass { //模板方法 public void TemplateMethod() { PrimitiveOperatio
2015-03-17 19:29:41 277
原创 设计模式之观察者模式
一、作用 让多个观察者监视某一对象的变化,如果对象变化,则通知所有观察者。 二、例子 /// /// 抽象主题类 /// public abstract class Subject { private IList observers = new List(); ///
2015-03-17 19:12:10 264
原创 设计模式之迭代器模式
一、作用 遍历数组中的元素。 二、优点缺点 优点:将容器和遍历功能解耦。 缺点:多了一个类。 三、应用场景 容器类比较臃肿的时候用最合适。 四、例子 class Iterator { public: Object first(); Object next(); Object currentItem();
2015-03-17 19:00:33 296
原创 设计模式之代理模式
一、作用 为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 二、优点和缺点 有可能代理实体是多余的。 三、应用场景 真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成一件完成事务,附带的结果就是编程简洁清晰。
2015-03-17 08:54:44 256
原创 设计模式之门面模式
一、作用 外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是门面模式。 二、优点缺点 没有特殊性。 三、应用场景 为一个复杂子系统提供一个简单接口。 四、例子 class Facade { private: Ring ring; Clarm clarm; Light ligh
2015-03-16 08:38:19 297
原创 设计模式之组合模式
一、作用 为用户屏蔽叶子节点和非叶子节点的区别。 二、优点缺点 没有明显特点。 三、应用场景 如果有的类有"孩子",有的类却没有,但是这些类的属性一致,则可以这么设计。 四、例子 class Component { public: virtual void do()=0; virtual void
2015-03-15 19:44:19 271
原创 设计模式之单例模式
一、作用 保证全局只用一个此类的实例。 二、好处和缺点 没有特殊性。 三、应用场景 一个带有全局化信息的class,就需要这样设计。 三、例子 public class LazySingleton { private: static LazySingleton newInstance = null; Laz
2015-03-15 19:16:23 368
原创 基础算法之回溯法、分支限界法
一、什么是回溯法 回溯法是一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。 二、如何使用 (1)针对所给问题,确定问题的解空间: 首先应明确定义问题的解空间,问题的解空间应至少包含问题的一个(最优)解。 (2)确定结点的扩展搜索规则。 (3)以深度优先方式
2015-03-02 08:21:11 824
原创 基础算法之贪心算法
一、什么是贪心算法 在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。 二、如何使用 (1)建立数学模型来描述问题。 (2)把求解的问题分成若干个子问题。 (3)对每一子问题求解,得到子问题的局部最优解。 (4)把子问题的解局部最优解合成原来解问题的一个解。 三、什么时候使
2015-03-01 14:48:26 317
原创 基础算法之分治法
一、什么是分治法 将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。 二、如何使用 (1)将原问题分解为若干个规模较小,相互独立,与原问题形式相同或者不同的子问题。 (2)若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题。 (3)将各个子问题的解合并为原问题的解。 三、什么时候使用 分治法所能解决的问
2015-03-01 13:30:48 337
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人