设计模式
江风弄舟
高通、MTK智能系统方案开发,IoT设备驱动开发,积累!交流!锐意进取!
展开
-
面向对象的设计原则-类设计原则
在面向对象设计中,如何通过很小的设计改变就可以应对设计需求的变化,这是令设计者极为关注的问题。为此不少OO先驱提出了很多有关面向对象的设计原则用于指导OO的设计和开发。下面是几条与类设计相关的设计原则。 1. 开闭原则(the Open Closed Principle OCP) 一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。因此在进行面向对象设计时要尽量考虑接口封装机制、抽转载 2010-05-17 09:42:00 · 700 阅读 · 1 评论 -
组合模式(Composite Pattern)要点
1.组合模式有时候又叫做部分-整体模式,是研究树形结构的问题,它可以使客户端将树枝节点(符合元素,有子元素)和叶子节点(没有子元素)一样看待,减化了不同类型节点的差异性和复杂性。2.使得用户对单个对象和组合对象的使用具有一致性。3.两种分类 透明方式 树枝节点和叶子节点都覆写了基类的方法 优点:所有的构件类都有相同的接口,叶子节点对象与树枝节点对象的区别起码在接口层次上消失了,对客户端是透明的。 缺点:不够安全,当叶子节点的方法在客户端调用运行时会出错,这样就要在叶子节点的方法里捕获这类错误原创 2010-06-05 23:29:00 · 476 阅读 · 0 评论 -
装饰模式(Decorator Pattern)要点
<br />1.解决由于扩展功能的增多导致子类膨胀的问题。<br />2.动态地给一个对象添加一些额外的职责,比生成子类更灵活。<br />3.以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。<br />4.并非解决“多子类衍生的多继承”问题,而是解决“主体类在多个方向上的扩展功能”。<br />5.使用场合 需要扩展一个类的功能,或给一个类增加附加责任。 需要动态地给一个对象增加功能,这些功能可以再动态地撤销。 <br /> 需要增加由一些基本功能的排列组合而产生的非常大量的功原创 2010-06-08 14:25:00 · 375 阅读 · 0 评论 -
工厂模式(Factory Pattern)要点
<br />1.工厂用来生产产品,用OO语言来说在方法中产生实例,不同的产品需要不同的工厂,使2者都具有多态性(变化),但产品和生产产品的工厂也很类似(抽象类),因此需要用抽象类来封装变化。<br />2.工厂模式的简单表现形式是简单工厂(工厂方法简单),复杂表现形式是抽象工厂(产品的2维变化问题),产品的复杂度决定工厂方法的复杂度。<br />3.角色划分<br /> 抽象工厂,声明生产产品的方法。<br /> 具体工厂,实现方法具体创建产品实例。<br /> 抽象产品,提供产品标准。<br原创 2010-06-07 11:10:00 · 646 阅读 · 1 评论 -
代理模式(Proxy Pattern)要点
<br />1.解决有些对象由于跨网或其它障碍而不能访问另一个对象的问题。<br />2.在客户程序和目标对象之间增加一个中间层,这个中间层就是代理。<br />3.涉及角色<br /> 抽象主题角色(Subject)<br /> 代理(Proxy)主题角色<br /> 真实主题(Real Subject)角色<br />4.类图<br />原创 2010-06-10 09:53:00 · 393 阅读 · 0 评论 -
享元(Flyweight)模式要点
<br />1.采用共享的方法来降低系统中细粒度对象的个数,从而降低内存消耗。<br />2.享元对象<br /> 内蕴状态(Internal State):存储在享元对象内部不随环境而改变,可以共享,使对象相对于内蕴状态在整个系统中是唯一的;<br /> 外蕴状态(External State):在客户端保存会随环境而改变,需要在使用的时候传入到对象的内部;<br /> 2种状态是相互独立的。<br />3.软件对象不依赖于对象的身份,这些对象是不可分辨的。<br />4.抽象享元角色(fly原创 2010-06-15 15:45:00 · 379 阅读 · 0 评论 -
门面(Facade)模式要点
<br />1.含义<br /> 要求一个子系统的外部与其内部的通信必须通过一个统一的门面(Facade)对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。<br />2.意图<br /> 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。<br />3.角色<br /> 门面(Facade)角色<br /> 子系统(subsystem)角色<br />4.使用场合为一个复杂子系统提供一个简单接口提高子系统的独立性在层原创 2010-06-19 16:45:00 · 341 阅读 · 0 评论 -
桥接模式(Bridge Pattern)要点
<br />1.符合ocp(开闭原则)/carp(组合/聚合服用原则)/类的单一职责原则。<br />2.解决类的多维度变化的问题,也即:使类能够轻松地沿着多个方向变化而不引入额外的复杂度。<br />3.将强关联的继承解耦成组合/聚合,降低耦合度,具体讲就是将抽象部分和实现部分分离,使2者独立变化。<br />4.非常有用的设计模式,也非常复杂。<br />5.类关系图<br />原创 2010-06-22 15:24:00 · 707 阅读 · 2 评论