精华内容
下载资源
问答
  • java 23种设计模式UML类结构

    千次阅读 2014-09-22 16:37:58
    抽象工厂模式与工厂方法模式的最大区别在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则需要面对多个产品等级结构。   2. Singleton模式 要点: 只能有一个实例 必须自行创建这个实例 必须...

    1. Factory模式

    简单工厂模式,又称静态工厂模式

    工厂方法模式

     

    3. 抽象工厂模式

    抽象工厂模式与工厂方法模式的最大区别在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则需要面对多个产品等级结构。

     

    2. Singleton模式

    要点:

    类只能有一个实例

    必须自行创建这个实例

    必须自行向外界提供这个实例

     3. Builder模式

    Builder模式利用一个Director对象和ConcreteBuilder对象一个一个地建造出所有的零件,从而建造出完整的Product。Builder模式将产品的结构和产品的零件建造过程对客户端隐藏起来,把对建造过程进行指挥的责任和具体的建造者零件的责任分割开来,达到责任划分和封装的目的。

     

    使用Builder模式的场合:

    需要生成的产品对象有复杂的内部结构。每一个内部成分本身可以是对象,也可以紧紧是产品对象的一个组成部分。

    需要生成的产品对象的属性相互以来。Builder模式可以强制实行一种分步骤进行的建造过程,因此,如果产品对象的一个属性必须在另一个属性被赋值之后才可以被赋值,使用建造模式便是一个很好的设计思想。

    在对象创建过程中会使用到系统中的其他一些对象,这些对象在产品对象的创建过程中不易得到。

     

    4. Prototype模式

    通过给出一个原型对象来指明所要创建的对象的类型,然后用赋值这个原型对象的办法创建出更多同类型的对象。

     

    5. Adapter模式

    把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作,也就是说把接口不同而功能相同或相近的多个接口加以转换。

     

    类的Adapter模式的结构

     

    对象的Adapter模式的结构

     

    注意两种结构的区别:主要就是Adaptee和Adapter的关系,一个为继承关系,一个为依赖关系。

    使用Adapter模式的场合:

    系统需要使用现在的类,而此类的接口不符合系统的需要。

    想要建立一个可以重复使用的类,用语与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。这些源类不一定有很复杂的接口。

    (对对象的Adapter模式而言)在设计里,需要改变多个已有的子类的接口,如果使用类的Adapter模式,就要针对每一个子类做一个Adapter类,而这不太实际。

    6. Composite模式

    把部分和整体的关系用树结构表示出来。Composite模式使得客户端把一个个单独的成分对象和由他们符合而成的合成对象同等看待。

    安全式的Composite模式

     

    透明式的Composite模式

     

    7. Decorator模式

    此模式又称Wrapper模式。是以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。

     

    在以下情况下Decorator模式:

    需要扩展一个类的功能,或给一个类增加附加责任。

    需要动态地给一个对象增加功能,这些功能可以再动态的撤销。

    需要增加由一些基本功能的排列组合个数的功能,从而使继承关系变得不现实。

    Decorator模式的简化

    没有抽象的Decorator

     

    没有抽象接口Component

     

     

    8. Proxy模式

    Proxy模式是给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。

     

     

    9. Flyweight模式

    Flyweight模式以共享的方式高效地支持大量的细粒度对象。Flyweight对象能做到共享的关键是区分内部状态(Internal state)和外部状态(External state)。

    内部状态是存储在Flyweight对象内部的,并且是不会随环境改变而有所不同的。因此,一个Flyweight可以具有内部状态并可以共享。

    外部状态是随环境改变而改变的、不可以共享的状态。Flyweight对象的外部状态必须有客户端保存,并在Flyweight对象被创建之后,在需要使用的时候再传入到Flyweight对象内部。

    外部状态不可以影响Flyweight对象的内部状态。它们是相互独立的。

    单纯Flyweight模式的结构

     

     

    复合Flyweight模式的结构


     

     

    在以下所有的条件满足时,可以考虑使用Flyweight模式:

    一个系统有大量的对象。

    这些对象耗费大量的内存。

    这些对象的状态中的大部分都可以外部化。

    这些对象可以按照内部状态分成很多的组,当把外部对象从对象中删除时,每一个组都可以仅用一个对象代替。

    软件系统不依赖于这些对象的身份,换言之,这些对象可以是不可分辨的。

     

     

    10. Facade模式

    外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是Façade模式。

    在以下情况下可以使用Facade模式:

    为一个复杂子系统提供一个简单接口

    子系统往往因为不断演化而变得越来越复杂,使用Facade模式可以使得子系统更具有可复用性。

    子系统的独立性

    一般而言,子系统和其他子系统之间、客户端和实现化层之间存在着很大的依赖性。引入Facade模式将一个子系统与它的客户端以及其他的子系统分离,可以提高子系统的独立性和可移植性。

    层次化结构

    在构建一个层次化的系统时,可以使用Facade模式定义系统中每一层的入口。如果层与层之间是相互依赖的,则可以限定它们仅通过Facade模式进行通信,从而简化层与层之间的依赖关系。

    11. Bridge模式

    Bridge模式的用意是“将抽象化与实现化解耦,使得二者可以独立地变化。”

     

    Bridge模式比较难于理解,下面对其给出详细的解释。

    “找到系统的可变因素,将之封装起来”,通常就叫做“对变化的封装”。对变化的封装实际上是达到“开-闭”原则的途径,与组合/聚合服用原则相辅相成。

    抽象化与实现化的最简单实现,也就是“开-闭”原则在类层次上的最简单实现,如下图所示。

     

    一般来说,一个继承结构中的第一层是抽象角色,封装了抽象的商业逻辑,这是系统中的不变的部分。第二层是实现角色,封装了设计中会变化的因素。这个实现允许实现化角色有多态性变化,如下图所示。

     

    换言之,客户端可以持有抽象化类型的对象,而不在意对象的真实类型是“实现化”、 “实现化1”还是“实现化2”,如下图所示。

     

    显然,每一个继承关系都封装了一个变化因素,而一个继承关系不应当同时处理两个变化因素。换言之,这种简单实现不能够处理抽象化与实现化都面临变化的情况,如下图所示。

     

    上图中的两个变化因素应当是彼此独立的,可以在不影响另一者的情况下独立演化。比如,下面的两个等级结构分别封装了自己的变化因素,由于每一个变化因素都是可以通过静态关系表达的,因此分别使用继承关系实现,如下图所示。

     

    那么在抽象化与实现化之间的变化怎么办呢?正确的设计方案应当是使用两个独立的等级结构封装两个独立的变化因素,并在他们之间使用聚合关系,以此达到功能复用的目的。

     

    根据上面的分析,在以下情况下应当使用Bridge模式:

    如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的联系。

    设计要求实现化角色的任何改变不应当影响客户端,或者说实现化角色的改变对客户端是完全透明的。

    一个构件有多于一个的抽象化角色和实现化角色,系统需要他们之间进行动态耦合。

    虽然在系统中使用继承是没有问题的,但是由于抽象化角色和具体化角色需要独立变化,设计要求需要独立管理这两者。

     

    12. Immutable模式

    一个对象的状态在对象被创建之后就不再变化,这就是Immutable模式。

    弱不变模式

    一个类的实例的状态是不可变化的,但是这个类的子类的实例具有可能会变化的状态。

    强不变模式

    一个类的实例的状态是不可变化的,同时这个类的子类的实例也具有不可变化的状态。

     

     

    13. Strategy模式

    Strategy模式就是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。

     

    Strategy模式的实现有以下这些需要注意的地方。

    经常见到的是,所有的具体策略类都有一些公有的行为。这时候,就应当把这些公有的行为放到共有的抽象策略角色Strategy类中。当然这时候抽象策略角色必须要用java抽象类实现,而不能使用java接口。

    Strategy模式在每一个时刻都只能使用一个策略对象,但是有的时候一个应用程序同时与几个策略对象相联系。换言之,在应用程序启动时,所有的策略对象就已经被创立出来,而应用程序可以在几个策略对象之间调换。

    在下面的情况下应当考虑使用Strategy模式:

    如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用Strategy模式可以动态地让一个对象在许多行为中选择一种行为。

    一个系统需要动态地在几种算法中选择一个。

    一个系统的算法使用的数据不可以让客户端知道。

    如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使用多重的条件选择语句来实现。此时,使用Strategy模式,把这些行为转移到相应的具体策略类里面,就可以避免使用难以维护的多重条件选择语句,并体现OO设计的概念。

     

     

    14. Template Method模式

    准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是Template Method模式的用意。

    15. Observer模式

    Observer模式定义了一种一对多的依赖关系,让多个观察着对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。

    1.简单的实现方案

     

    2.另一种实现方案

     

     

     

    16. Iterator模式

    Iterator模式可以顺序地访问一个聚集中的元素而不必暴露聚集的内部表示。

    .

    17. Chain of Responsibility模式

    在责任链模式中,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配任务。

     

     

    18. Command模式

    Command模式把一个请求或者操作封装到一个对象中。Command模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。

    Command模式是对命令的封装。Command模式把发出命令的责任和执行命令的责任分隔开,委派给不同的对象。

    每一个命令都是一个操作:请求的一方发出请求要求执行一个操作;接收的一方收到请求,并执行操作。Command模式允许请求的一方和接收的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接收,以及操作是否被执行、何时被执行,以及是怎么被执行的。

     


    19. Memento模式

    Memento模式是一个保存另外一个对象内部状态拷贝的对象,这样以后就可以将该对象恢复到原先保存的状态。

    20. State模式

    State模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。

     

    在以下各种情况下可以使用状态模式:

    一个对象的行为依赖于它所处的状态,对象的行为必须随着其状态的改变而改变。

    对象在某个方法里依赖于一重或多重的条件转移语句,其中有大量的代码。State模式把条件转移语句的每一个分支都包装到一个单独的类里。这使得这些条件转移分支能够以类的方式独立存在和演化。维护这些独立的类也就不再影响到系统的其他部分。

    State模式与Strategy模式的区别

    一个简单的方法就是考察环境角色是否有明显的状态和状态的过渡。如果环境角色只有一个状态,那么就应当使用Strategy模式。Strategy模式的特点是:一旦环境角色选择了一个具体策略类,那么在整个环境类的生命周期里它都不会改变这个具体策略类。而State模式则适用于另一种情况,即环境角色有明显的状态转移。

    另一个微妙的差别在于,Strategy模式的环境类自己选择一个具体策略类;而State模式的环境类是被外在原因放进一个具体状态中的。

    Strategy模式所选的策略往往并不明显地告诉客户端它所选择的具体策略;而状态模式则相反,在State模式里面,环境角色所处的状态是明显告诉给客户端的。

     

    21. Visitor模式

    表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。

     


    22. Interpreter模式

    Interpreter模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。

     

    Interpreter模式的几个要点

    Interpreter模式的应用场合是Interpreter模式应用中的难点,只有满足“业务规则频繁变化,且类似的模式不断重复出现,并且容易抽象为语法规则的问题”才适合使用Interpreter模式。

    使用Interpreter模式来表示文法规则,从而可以使用面向对象技巧来方便地“扩展”文法。

    Interpreter模式比较适合简单的文法表示,对于复杂的文法表示,Interpreter模式会产生比较大的类层次结构,需要求助于语法分析生成器这样的标准工具。

     

    23. Mediator模式

    Mediator模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用。从而使他们可以较松散地耦合。当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其他的一些对象之间的相互作用。从而保证这些相互作用可以彼此独立变化。



    展开全文
  • 23种设计模式UML图

    千次阅读 2020-06-19 19:33:02
    设计模式UML图 创建型模式(5种):工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式(7种):适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型...

    23种设计模式UML图

    总体来说基本的23种设计模式分为三大类:

    创建型模式(5种):工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
    结构型模式(7种):适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
    行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

    文章目录

    1、简单工厂模式

    例(计算器)

    例(商场促销)

    2、策略模式

    策略模式UML结构图

    例(商场促销)

    环境角色:

    class CashContext {
    	private CashSuper cs;
    
    	public CashContext(CashSuper csuper) {
    		this.cs = csuper;
    	}
    
    	public double GetResult(double money) {
    		return cs.acceptCash(money);
    	}
    }
    

    策略模式+简单工厂模式

    3、装饰模式

    装饰模式UML结构图

    基本代码展示:

        abstract class Component
        {
            public abstract void Operation();
        }
    
        class ConcreteComponent : Component
        {
            public override void Operation()
            {
                Console.WriteLine("具体对象的操作");
            }
        }
    
        abstract class Decorator : Component
        {
            protected Component component;
    
            public void SetComponent(Component component)
            {
                this.component = component;
            }
    
            public override void Operation()
            {
                if (component != null)
                {
                    component.Operation();
                }
            }
        }
    
        class ConcreteDecoratorA : Decorator
        {
            private string addedState;
    
            public override void Operation()
            {
                base.Operation();
                addedState = "New State";
                Console.WriteLine("具体装饰对象A的操作");
            }
        }
    
        class ConcreteDecoratorB : Decorator
        {
    
            public override void Operation()
            {
                base.Operation();
                AddedBehavior();
                Console.WriteLine("具体装饰对象B的操作");
            }
    
            private void AddedBehavior()
            {
    
            }
        }
    

    例(给人搭配不同的服饰)(装饰模式做法)

    例(InputStream)

    例(OutputStream)(新增了自定义的装饰器EncryptedOutputStream)

    4、代理模式

    代理模式UML结构图

    例(为别人做嫁衣——请代理送礼物)

    ·

    5、工厂方法模式

    简单工厂 VS 工厂方法(以计算器为例)

    简单工厂UML结构图(以计算器为例)

    工厂方法UML结构图(以计算器为例)

    工厂方法模式UML结构图

    6、原型模式

    原型模式UML结构图

    img

    例(订单处理系统(深复制)——Java)

    7、外观(门面)模式

    外观模式UML结构图

    img

    8、模板方法模式

    例(登录界面实现)

    img

    例(通过JDBC方式连接数据库)

    img

    9、建造者(生成器)模式

    建造者模式UML结构图

    img

    例(文件备份)(文件头、主体、结尾):

    img

    10、观察者模式

    观察者模式UML结构图

    img

    例(股票行情变动)

    img

    11、抽象工厂模式

    例(工厂方法模式下的数据库访问UML图)

    img

    例(抽象工厂模式下的数据库访问UML图)

    img

    抽象工厂模式UML结构图

    img

    利用简单工厂改进抽象工厂(以选择数据库为例)

    去除IFactory、SqlserverFactory和AccessFactory三个工厂类,取而代之的是DataAccess类,用一个简单工厂模式来实现:

    UML图:

    img

    例(反射+配置文件+简单工厂改造后的抽象工厂实现数据库访问)

    12、状态模式

    状态模式UML结构图

    img

    例(工作状态)

    13、适配器模式

    适配器模式UML结构图

    14、备忘录模式

    备忘录模式UML结构图

    img

    例(游戏进度备忘)

    img

    15、组合模式

    组合模式UML结构图

    16、迭代器模式

    迭代器模式UML结构图

    17、单例模式

    单例模式UML结构图

    18、桥接模式

    例(不同品牌手机软件的安装)

    按品牌分类:

    img

    按软件实现分类:

    img

    桥接模式实现:

    img

    桥接模式UML结构图

    img

    全部采用继承,不使用桥接模式的UML图(如果继续扩展消息类型或者发送方式将会十分繁琐):
    例:继续添加发送手机消息的处理方式(这个时候代码结构就逐渐开始变得复杂):
    桥接模式实现:

    img

    19、命令模式

    命令模式UML结构图

    img

    例(烤羊肉串)

    img

    例(计算器——允许执行undo与redo)

    img

    20、职责链模式

    职责链模式UML结构图

    21、中介者模式

    结构样例类比

    imgimg

    中介者模式UML结构图

    img

    22、享元模式

    享元模式UML结构图

    img

    例(申请网站)

    (一组网站的结构是类似的,我们看成是可共享的部分(内部状态),而每个网站的用户是不同的,不可共享的,是外部状态):

    UML图:

    img

    例(五色棋)

    (棋子的颜色是类似的,只有固定的几种,可以看成是可共享的(内部状态),但是棋子的位置是不确定的,是不可共享的(外部状态))

    UML图:

    img

    23、访问者模式

    访问者模式UML结构图

    展开全文
  • 设计模式----代理模式UML和实现代码

    千次阅读 2015-11-26 00:06:00
    一、什么是代理模式? 代理 模式(Proxy)定义:为其他对象提供一种代理,以控制对这个对象的访问 类型: 结构型模式 顺口溜:适装 桥 组享 代 外 二、 代理 模式UML 三、JAVA代码实现 ...

    一、什么是代理模式?

    代理模式(Proxy)定义:为其他对象提供一种代理,以控制对这个对象的访问

    类型:结构型模式

    顺口溜:适装组享

    二、代理模式UML

    235619_qHD7_2003960.png

    三、JAVA代码实现

    package com.amosli.dp.structural.proxy;
    
    public class Client {
    	public static void main(String[] args) {
    		Proxy proxy = new Proxy();
    		proxy.request();
    	}
    }
    
    package com.amosli.dp.structural.proxy;
    
    public class Proxy extends Subject {
    	private Subject subject;
    
    	public Proxy() {
    		subject = new RealSubject();
    	}
    
    	@Override
    	void request() {
    		subject.request();
    	}
    
    }
    
    package com.amosli.dp.structural.proxy;
    
    public class RealSubject extends Subject{
    
    	@Override
    	void request() {
    		System.out.println("this is realsubject...");
    	}
    
    }
    
    package com.amosli.dp.structural.proxy;
    
    public abstract class Subject {
    	abstract void request();
    }

    四、使用场景

    1 远程代理(Remote  Proxy)

        为一个位于不同的地址空间的对象提供一个本地的代理对象。这个不同的地址空间可以是在同一台主机中,也可是在另一台主机中,远程代理又叫做大使(Ambassador) 

    2 虚拟代理(Virtual Proxy)

        根据需要创建开销很大的对象。如果需要创建一个资源消耗较大的对象,先创建一个消耗相对较小的对象来表示,真实对象只在需要时才会被真正创建。  

    3 保护代理(Protection Proxy)

        控制对原始对象的访问。保护代理用于对象应该有不同的访问权限的时候。 

    4 智能指引(Smart Reference)

        取代了简单的指针,它在访问对象时执行一些附加操作。

    5 Copy-on-Write代理

    它是虚拟代理的一种,把复制(克隆)操作延迟到只有在客户端真正需要时才执行。一般来说,对象的深克隆是一个开销较大的操作,Copy-on-Write代理可以让这个操作延迟,只有对象被用到的时候才被克隆。

    五、源码地址

    本系列文章源码地址,https://github.com/amosli/dp  欢迎Fork  & Star !!



    转载于:https://my.oschina.net/u/2003960/blog/535648

    展开全文
  • 设计模式UML模型

    2019-09-30 11:33:54
    2.的适配器(Adapter)模式意图:将一个的接口转换成客户希望的另外一个接口。3.对象的适配器(Adapter)模式意图:将一个的接口转换成客户希望的另外一个接口。4.桥梁(Bridge)/柄体(Handle and Body)模式意图:将...

    1.抽象工厂(Abstract Factory)模式
    设计模式的UML图(转)


    意图:为特定的客户(或情况)提供特定系列的对象。

    2.类的适配器(Adapter)模式
    设计模式的UML图(转)


    意图:将一个类的接口转换成客户希望的另外一个接口。

    3.对象的适配器(Adapter)模式
    设计模式的UML图(转)


    意图:将一个类的接口转换成客户希望的另外一个接口。

    4.桥梁(Bridge)/柄体(Handle and Body)模式
    设计模式的UML图(转)


    意图:将抽象部分与它的实现部分分离,使它们都可以独立地变化。

    5.建造(Builder)模式
    设计模式的UML图(转)


    意图:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。


    11.门面(Facade)模式
    设计模式的UML图(转)


    意图:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

    12.工厂方法(Factory Method)/虚拟构造子(virtual Constructor)/多态性工厂(Polymorphic Factory)模式
    设计模式的UML图(转)


    意图:定义一个用于创建对象的接口,让子类决定实例化哪一个类。

    13.享元(Flyweight)模式
    设计模式的UML图(转)


    意图:运用共享技术有效地支持大量细粒度的对象。

    14.解释器(Interpreter)模式
    设计模式的UML图(转)


    意图:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。

    15.迭代子(Iterator)/游标(Cursor)模式
    设计模式的UML图(转)



    意图:提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。


    16.调停者(Mediator)模式
    设计模式的UML图(转)
    意图:用一个中介对象来封装一系列的对象交互。

    17.备忘录(Memento)模式
    设计模式的UML图(转)


    意图:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。

    18.观察者(Observer)模式
    设计模式的UML图(转)


    意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。

    19.原型(Prototype)模式
    设计模式的UML图(转)


    意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

    20.代理(Proxy)模式
    设计模式的UML图(转)


    意图:为其他对象提供一种代理以控制对这个对象的访问。


    21.单例(Singleton)模式
    设计模式的UML图(转)



    意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

    22.状态(State)模式
    设计模式的UML图(转)


    意图:允许一个对象在其内部状态改变时改变它的行为。

    23.策略(Strategy)模式
    设计模式的UML图(转)


    意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。

    24.模版方法(Template Method)模式
    设计模式的UML图(转)


    意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。

    25.访问者(Visitor)模式
    设计模式的UML图(转)


    意图:表示一个作用于某对象结构中的各元素的操作。

    ==========================================================

    设计模式的UML图(转) 

    设计模式的UML图(转)

    设计模式的UML图(转) 

    设计模式的UML图(转)

    设计模式的UML图(转) 

    设计模式的UML图(转) 

    设计模式的UML图(转)

    设计模式的UML图(转)

    设计模式的UML图(转)

    设计模式的UML图(转) 

    设计模式的UML图(转) 

    设计模式的UML图(转) 

    设计模式的UML图(转)

    设计模式的UML图(转) 

    设计模式的UML图(转) 

    设计模式的UML图(转) 

    设计模式的UML图(转) 

    设计模式的UML图(转)

    设计模式的UML图(转)

    设计模式的UML图(转) 

    设计模式的UML图(转)

    设计模式的UML图(转)

    设计模式的UML图(转)

    设计模式的UML图(转)

    转载于:https://www.cnblogs.com/flywang/p/5265082.html

    展开全文
  • 设计模式分类及UML汇总

    千次阅读 2018-07-09 09:41:02
    一、设计模式分类 创建型 结构型 ... 代理模式 观察者模式 建造者 外观模式 迭代子模式 原型模式 桥接模式 责任链模式 . 组合模式 命令模式 . 享元模式 备忘录模式 . ...
  • 代理模式,就是相同的两个,一个做另一个的代理人。出头露面的是第一个人,实际做事情的是第二人。   但是第一个人怎么知道第二个人能做那些事情。就继承了同一个父类。     CMon代理他所有女儿的...
  • GOF-23种设计模式UML图

    2020-08-18 14:26:35
    创建型(单原建工) 单例模式 原型模式 建造者模式 简单工厂模式 工厂方法模式 结构型(适外桥享,代组装) 适配器模式 外观模式 桥接器模式 ...代理模式 组合模式 装饰器模式 行为型 ...
  • 设计模式uml.vsdx

    2020-04-25 22:22:48
    结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合... 2.设计模式的六大原则 1、开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭。在程序需要... 3.Java的23中...
  • 设计模式UML图02

    2020-08-01 15:38:24
    1、单例模式 1.1 、饿汉式 要点:1》构造器私有化;2》本创建静态常量内部实例;3》提供一个公有方法返回实例; 1.2、懒汉式 要点:1》构造器私有化;2》提供一个公有方法返回实例,在使用的时候,创建静态常量内部...
  • 23种设计模式UML图and简例

    千次阅读 2014-03-08 21:00:09
    在这里23种经典设计模式UML类图汇总 创建型模式 1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四...
  • 代理模式UML类图与实现源码

    千次阅读 2009-12-18 16:33:22
    以下是一个代理模式UML图: 源码:Image接口   public interface Image { void show(); }  BigImage   public class BigImage implements Image { public BigImage(){ try { //系统延时3...
  • 经典的《设计模式》一书归纳出23种设计模式,本文按《易学设计模式》一书归纳分类如下: 1.创建型模式 前面讲过,社会化的分工越来越细,自然在软件设计方面也是如此,因此对象的创建和对象的使用分开也就成为...
  • 常见设计模式UML图

    2018-10-17 22:18:00
    常见设计模式UML图 本文主要总结常见的设计模式的UML,方便查阅和思考。 创建型模式 简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式和单例模式,这五种设计模式主要处理对象的创建工作。每个部分...
  • 设计模式示例及UML图

    2021-08-03 13:41:29
    文章目录简单工厂模式策略模式装饰模式代理模式工厂方法模式 文章顺序按照《大话设计模式》 代码见https://gitee.com/sevene-assiduous/DesignPattern.git 简单工厂模式 主要用于的生成,通过一个工厂生成某一类型...
  • C#23种设计模式样例代码和UML图等 创建型模式(抽象工厂模式、工厂方法模式、单例模式、建造者模式、原型模式);...结构型模式(代理模式、桥接模式、适配器模式、外观模式、享元模式、装饰器模式、组合模式)
  • 目录一 、类图的表示二、创建者模式1、单例模式2、简单工厂模式3、工厂方法模式4、抽象工厂模式5、原型模式6、建造者模式三、结构型模式1、代理模式2、适配器模式3、装饰者模式4、桥接模式5、外观模式6、组合模式7、...
  • 设计模式UML图

    千次阅读 2012-08-09 15:28:48
    1.抽象工厂(Abstract Factory)模式 ...意图:为特定的客户(或情况)提供特定系列的对象。...2.的适配器(Adapter)模式 意图:将一个的接口转换成客户希望的另外一个接口。 3.对象的适配器(Adapter)模式
  • UML类图和对象

    千次阅读 热门讨论 2018-05-18 16:28:35
    前言    &...进行UML视频学习已经有了一段时间了,又有了一定
  • 一。适配器二。桥梁模式三。装饰模式四。合成模式五。门面模式六。享元模式七。代理模式
  • 代理模式构造幸的设计模式之一,他可以为其他对象提供一种代理,以控制这个对象的访问。 所谓代理,是指具有代理元(被代理的对象)具有相同的接口的,客户端必须通过代理与被代理的目标交互,而代理一般在交互的...
  • 设计模型之代理模式 1.代理模式 1.1 定义与特点   代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象...
  • 描述、接口、协作及他们之间的关系的。显示系统中的静态结构。 有什么作用? 描述软件系统的静态结构 ①对系统的词汇建模 ②对简单协作建模 ...
  • (一)学习方法 1:了解设计模式,通过阅读相关的设计模式书籍 2:动手体验设计模式 3:总结经验教训 4:与其他开发者交流讨论 ...(二)UML类图 Unified Modeling Language 统一建模语言 对应关系 ...
  • 23种设计模式UML图

    2016-09-30 10:09:46
    目录 创建型 1. Factory Method(工厂方法) 2. Abstract Factory(抽象工厂) ...结构型 6. Adapter Class/Object(适配器) 7. Bridge(桥接) 8. Composite(组合) 9. Decorator(装饰)
  • 代理模式

    2019-04-15 20:04:30
    1.3代理模式UML结构图 2.代理模式的Java实现 2.1用例UML结构图 2.2用例代码 3.JDK对代理模式的支持 3.1JDK动态代理用例实现 3.1.1动态代理UML结构图 3.1.2动态代理用例代码 3.2JDK动态代理原理解析 3.3JDK...
  • 这里打算把23种设计模式UML类图总结一下。参考了很多网上的资料,不能算原创了。书的话我看的是headfirst设计模式,没有看Gof的,这里把手头上的资料整理一下,希望尽可能简介明了的解释清楚则23种设计模式,主要...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,632
精华内容 5,052
关键字:

代理模式uml类结构图