![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计
qq_35406143
这个作者很懒,什么都没留下…
展开
-
面向对象设计模式的六大基本原则(设计类的原则)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////方法设计(算法设计) /////////////////////////////////////////////////////////...原创 2016-04-30 15:17:14 · 109 阅读 · 0 评论 -
* 策略模式(Strategy)
GOF意图:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。(同一个调用类在不同策略下有不同策略实现的解决方案) 角色:环境类(Context):用一个Strategy对象来配置。维护一个对Strategy对象的引用抽象策略类(Strategy):有一个方法Algorithminterface()是context当前策略下的不同实现。具体策略...原创 2016-05-03 20:14:41 · 80 阅读 · 0 评论 -
观察者模式(Observer)
GOF意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。(一个类(观察者)的行为依赖另一个类(被观察者)的行为) 角色:1 抽象主题(Subject):抽象被观察者,维持有一个观察者列表,可以添加和删除,被观察这变化的时候调用或通知观察者。2 具体主题(ConcreteSubject): 具体被观察者。3 抽象观...原创 2016-05-03 20:46:17 · 61 阅读 · 0 评论 -
中介者模式(Mediator )
GOF意图:用一个中介对象来封装一系列的对象交互 角色:Mediator(中介者):中介者定义一个接口用于与各同事对象进行通信ConcreteMediator(具体中介者):要持有每个同事的引用,或持有同事列表。Colleague class(同事):持有中介者引用,要与别的同事通讯,可以通过中介者的接口查到同事通讯。 实现要点:中介者持有同事列表,和提供通讯接...原创 2016-05-03 21:40:35 · 98 阅读 · 0 评论 -
模板方法模式(Template Method)
GOF意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。(固定步骤行为的解决方案) 角色:1 抽象类(AbstractClass):实现了模板方法,定义了算法的骨架。 2 具体类(ConcreteClass):实现抽象类中的抽象方法,已完成完整的算法。 实现要点:固定步骤在父类中定义成抽象方法。 ...原创 2016-05-04 12:29:14 · 69 阅读 · 0 评论 -
迭代者模式(Iterator)
GOF意图:提供一种方法顺序访问一个聚合对象中各个元素,,而又不需暴露该对象的内部表示(遍历集合中的每个元素) 角色:Iterator(迭代器):ConcreteIterator (具体迭代器):持有集合的引用,,知道第一个,并且记着集合当前遍历的位置,并且知道如何找到下一个,并且知道什么时候结束。Aggregate (集合):ConcreteAggregate (具体...原创 2016-05-04 12:29:23 · 231 阅读 · 0 评论 -
*单例模式(Singleton )
GOF意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点角色:singleton(单例):有一个静态的本身实例,并且有个静态的方法如果实例为空则创建且返回该实例,否则直接返回实例。 实现要点:instance()获得或创建实例 uniqueInstance是本身实例。 ...原创 2016-05-04 12:43:47 · 65 阅读 · 0 评论 -
原型模式(Prototype)
GOF意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。(用已存在的类A实例创另一个类A实例)角色:Prototype:抽象原型类。声明克隆自身的接口clone。 ConcretePrototype:具体原型类。实现克隆的具体操作。 Client:客户类。使用clone类的用户。 实现要点:clone方法实现时一定要深拷贝,不能是浅拷贝。 浅拷...原创 2016-05-04 13:19:40 · 57 阅读 · 0 评论 -
生成器模式 (Builder)
GOF意图:将一个复杂对象的构建(Director)与它的表示(builder)分离,使得同样的构建过程(Director定义的)可以创建不同的表示(builder在组装的)。(构建与表示分离) 角色:1 builder:为建造者,提供建造part的接口buildPart()建造产品的一部分,获得建造结果的接口geResult()。2 ConcreteBuilder:具体建造...原创 2016-05-04 16:45:13 · 131 阅读 · 0 评论 -
状态模式(State)
GOF意图:允许一个对象在其内部状态改变时改变它的行为。(同一个调用类在不同状态下有不同反应) 角色:环境类(Context): 定义客户感兴趣的接口。维护一个ConcreteState类的实例,这个ConcreteState是context的状态。抽象状态类(State): 抽象状态,有一个方法handle()是context当前状态下的反应。具体状态类(Concre...原创 2016-05-03 20:04:41 · 58 阅读 · 0 评论 -
访问者模式(Visitor )
GOF意图:表示一个作用于某对象结构中的各元素的操作。(元素设定访问器,访问器再访问对象)角色:1.Visitor 抽象访问者角色。有方法visitElent需要元素参数2.ConcreteVisitor.具体访问者角色,访问元素对象的。3.Element 被访问者,定义一个接受访问操作(accept()),它以一个访问者(Visitor)作为参数。4.ConcreteE...原创 2016-05-03 16:39:40 · 85 阅读 · 0 评论 -
桥接模式(Bridge)
GOF意图:将抽象部分与它的实现部分分离,使它们都可以独立地变化 角色:抽象化(Abstraction)角色:抽象化给出的定义,并保存一个对实现化对象的引用。修正抽象化(Refined Abstraction)角色:扩展抽象化角色,改变和修正父类对抽象化的定义。 实现化(Implementor)角色:这个角色给出实现化角色的接口,但不给出具体的实现。必须指出的是,...原创 2016-05-01 15:27:37 · 55 阅读 · 0 评论 -
UML类图与类的关系
类的表示方法 接口的表示方法 或者类之间关系(耦合性从强到弱)继承:is a 关系 实现: 组合:contains a关系表示两个对象之间是整体和部分的强关系,部分的生命周期不能超越整体,或者说不能脱离整体而存在。组合关系的“部分”,是不能在整体之间进行共享的person组合了eye 聚合:has a关系表示两个对象之间是整体和部分的弱关系,部分的生命周...原创 2016-05-01 16:17:58 · 62 阅读 · 0 评论 -
组合模式 (Composite)
GOF意图:将对象组合成树形结构以表示“部分整体”的层次结构。(组成一个树状结构) 角色:1.Component 是统一接口,在适当的情况下,实现共有的默认行为。声明一个接口用于访问多个leaf。2.Leaf 被组合的对象。3.Composite 是组合者,有一个list列表,用来存储leaf部件,在Component接口中实现子部件有关操作,如增加(add)和删除(...原创 2016-05-01 17:10:54 · 99 阅读 · 0 评论 -
装饰模式(Decorator)
装饰模式又名包装(Wrapper)模式 GOF意图:动态地给一个对象添加一些额外的职责。(功能分离,自由组合)Decorator模式相比生成子类更为灵活角色:抽象构件(Component)角色:一个统一抽象接口,里面没有被包装者的引用。具体构件(ConcreteComponent)角色:原始被包装者,没有被包装者的引用。装饰(Decorator)角色:是包装者的父类,持有被包...原创 2016-05-01 18:25:17 · 54 阅读 · 0 评论 -
外观模式(Facade)
GOF意图:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用 角色:(1) Facade(外观角色):在客户端可以调用它的方法,在外观角色中可以知道相关的(一个或者多个)子系统的功能和责任;在正常情况下,它将所有从客户端发来的请求委派到相应的子系统去,传递给相应的子系统对象处理。(2) SubSystem(子系统角色):在...原创 2016-05-01 18:41:37 · 52 阅读 · 0 评论 -
适配器模式(Adapter)
GOF意图:将一个类的接口转换成客户希望的另外一个接口。Adapt 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 角色:1 目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。2 适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。3 需要适配的类(Adaptee):需要适配的类或被适...原创 2016-05-02 11:05:26 · 58 阅读 · 0 评论 -
代理模式 (Proxy)
GOF意图:为其他对象提供一种代理以控制对这个对象的访问角色:1) 抽象主题角色(Subject):统一接口2)代理角色(Proxy):保存一个引用使得代理可以访问实体。若 RealSubject和Subject的接口相同,Proxy会引用Subject。提供一个与Subject的接口相同的接口,这样代理就可以用来替代实体。控制对实体的存取,并可能负责创建和删除它。...原创 2016-05-02 11:05:45 · 110 阅读 · 0 评论 -
享元模式 (Flyweight)
GOF意图:运用共享技术有效地支持大量细粒度的对象Flyweight模式是构造型模式之一,它通过与其他类似对象共享数据来减小内存占用,所以叫享元。 此模式解决的是由于大量的细粒度对象所造成的内存开销的问题,它在实际的开发中并不常用,但是作为底层的提升性能的一种手段却很有效 角色:享元工厂(FlyweightFactoiy)角色:维持一个享元列表,并且负责创建和查询抽...原创 2016-05-02 11:08:41 · 101 阅读 · 0 评论 -
简单工厂模式 (SimpleFactory)工厂方法模式 (Factory Method)抽象工厂模式(Abstract Factory)...
简单工厂模式 (SimpleFactory) 实现要点:工厂有一个方法createProduct()可以生产抽象product的不同具体产品。每个具体产品可以需要不同的标识。public static Operation createOperate(string operate){ Operation oper = null; switch (operate) ...原创 2016-05-05 11:01:50 · 92 阅读 · 0 评论