设计模式总结
工厂模式、单例模式...
_wjunjie
加油吧!
展开
-
设计模式——代理模式总结
一、代理模式定义:为其他对象提供一种代理以控制对这个对象的访问。二、组成:Subject抽象主题角色、RealSubject具体主题角色、Proxy代理主题角色(代理类)三、通用UML图:四、通用代码:抽象主题角色:package 代理模式;public interface Subject { public void request();}具体主题角色:...原创 2019-04-08 13:32:04 · 224 阅读 · 0 评论 -
设计模式——命令模式(本质:封装请求)
一、示意性代码&&UML图:命令角色://命令角色public abstract class Command { protected Receiver receiver=null; public Command(Receiver receiver) { this.receiver=receiver; } public...原创 2019-05-20 20:54:35 · 180 阅读 · 0 评论 -
设计模式——享元模式 Flyweight(变与不变)
一、定义: 运用共享有效地支持大量细粒度的对象。二、UML图:三、两个状态: 内部状态(不变)和外部状态(可变)。四、优缺点:优点: 大幅度降低内存中对象的数量,节省内存空间。缺点: 享元模式使得系统更复杂,为了是对象可以共享,需要将一些状态外部化,这使得程序的逻辑复杂化。...原创 2019-05-27 22:23:04 · 198 阅读 · 0 评论 -
设计模式——单例模式(本质:控制实例数目)
一、定义: 保证一个类仅有一个实例,并提供一个访问它的全局访问点。二、UML图及组成构件:三、分类:饿汉式(时间换空间):用的时候生成实例懒汉式(空间换时间):提前创建好对象,用的时候直接返回。四、单例模式特点:单例类只能有一个实例。单例类必须自己创建自己的唯一实例。 单例类必须给所有其它对象提供这一实例。...原创 2019-05-07 18:22:14 · 391 阅读 · 0 评论 -
设计模式——桥接模式(本质:分离抽象和实现)
一、定义: 将抽象部分与它的实现部分分离,是他们可以独立地变化。。二、体现原则:开闭原则、组合/聚合复用原则(用组合/聚合代替 继承)、三、例子实现:实例1(PPT):不同发送消息的方式:UML图:代码实现://抽象消息类public abstract class AbstractMessag...原创 2019-06-04 10:00:16 · 541 阅读 · 0 评论 -
设计模式——职责链模式(本质:分离职责,动态组合)
组成部分:抽象处理者(Handler)角色:定义出一个处理请求的接口。如果需要,接口可以定义出一个方法,以设定和返回对下家的引用。这个角色通常由一个抽象类或接口实现。具体处理者(ConcreteHandler)角色:具体处理者接到请求后,可以选择将请求处理掉,或者将请求传给下家。由于具体处理者持有对下家的引用,因此,如果需要,具体处理者可以访问下家。优点:请求者和接收者松散耦...原创 2019-06-04 10:49:34 · 332 阅读 · 0 评论 -
设计模式——中介者模式(本质:封装交互)
一、课本例子:联合国安理会做中介者:UML图(自己画 vs 自动生成):自己的描述不准确。。。代码实现:package 安理会;public abstract class UniteNations { public abstract void declare(String message,Coun...原创 2019-06-04 11:04:44 · 304 阅读 · 0 评论 -
设计模式——访问者模式(预留通路,回调实现)
一、定义: 表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。二、UML图:三、课本男人女人不同状态:UML:代码实现:package 男人女人不同情景不同状态;public abstract class Action { public a...原创 2019-06-04 11:30:45 · 219 阅读 · 0 评论 -
设计模式——简单工厂(本质:选择实现)
一、优缺点:优点:工厂类含有必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例客户端可以免除直接创建产品对象的责任,而仅仅"消费"产品。简单工厂模式通过这种做法实现了对责任的分割。缺点:当产品有复杂的多层等级结构时,工厂类只有自己,以不变应万变,就是模式的缺点。因为工厂类集中了所有产品创建逻辑,一旦不能正常工作,整个系统都要受到影响。同时,系统扩展困难,一旦添加新产...原创 2019-06-10 19:59:46 · 206 阅读 · 0 评论 -
设计模式——策略模式(本质:分离算法,选择实现)
一、优缺点(PPT):优点: 策略模式可以避免让客户端涉及到不必要接触到的复杂的和只与算法有关的数据。避免使用难以维护的多重条件选择语句,更好的扩展缺点: 上述策略模式,把分支判断又放回到客户端,要改变需求算法时,还是要去更改客户端的程序。 客户端必须知道所有的策略类,并自行决定使用哪一个策略类。这就意味着客户端必须理解这些算...原创 2019-06-10 23:36:06 · 702 阅读 · 0 评论 -
设计模式——依赖倒转原则 示例
依赖倒转原则: 程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。UMlL图:(直接课件上的。。。)代码实现:package 灯;public interface Iswitch { public void turnOn(); public void tur...原创 2019-06-11 08:16:31 · 302 阅读 · 0 评论 -
设计模式——组合模式(本质:统一叶子对象和组合对象)
一、定义: 将对象组合成树形结构以表示“部分——整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。二、组成角色: 1、抽象构件角色Component:给参与组合的对象规定一个接口。 2、树叶构件角色Leaf:没有子对象的对象 3、树枝构件角色Composite:有子对象的对象三、使用场景:1、...原创 2019-05-07 11:33:23 · 414 阅读 · 0 评论 -
设计模式——备忘录模式(本质:保存和恢复内部状态)
一、定义: 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态。二、组成部分:1、原发器角色Originator:创建备忘录,并存储其内部状态,或者利用备忘录恢复状态;2、备忘录角色Memento:保存原发器的状态,内部结构和原发器类似;3、负责人角色Caretaker:...原创 2019-05-06 21:52:30 · 312 阅读 · 0 评论 -
设计模式——工厂模式总结
一、简单工厂回顾:组成:抽象产品类角色、工厂类角色、具体产品类角色优点: 工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类;对于客户端来说,去除了与具体产品的依赖缺点:在某种程度上违背了开放--封闭原则,对工厂类过于依赖 。二、工厂模式(简单工厂模式的进一步抽象)(符合依赖倒转原则)通用UML图:二、通用代码:1、抽象工...原创 2019-04-09 14:45:35 · 368 阅读 · 0 评论 -
设计模式——模板模式
比较详细的资料:https://www.cnblogs.com/jenkinschan/p/5768760.htmlhttps://blog.csdn.net/kongzhongniao/article/details/80497565一、定义:定义一个操作中的算法的框架,而将这些步骤的实现延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 ...原创 2019-04-12 19:52:45 · 108 阅读 · 0 评论 -
设计模式——原型模式总结
概括:原型模式就是对象对自己本身的一个复制,java中通过Object的clone方法实现,因为该方法的原理是内存中二进制流的处理,所以一种应用就是代替时间效率比较低的new方法,其次需要注意的问题就是复制过程中的深复制、浅复制问题。通用类图:通用代码:抽象原型角色是Object?package 通用;public class Protot...原创 2019-04-09 19:32:52 · 180 阅读 · 0 评论 -
设计模式——建造者模式
一、定义:将一个复杂对象的创建和它的表示方法分离,使得同样的构建过程可以创建不同的表示。(不明白)二、组成:1、Product产品类2、Builder抽象建造者3、ConcreteBuilder具体建造者4、Director导演类三、通用类图:四、通用代码:(不是很严谨,大体这个意思,导演类通过控制建造者完成产品的组装、最后返回产品)...原创 2019-04-20 22:15:34 · 100 阅读 · 0 评论 -
设计模式——门面模式
组成: Facade门面角色、subsystem子系统角色定义:子系统的外部与其内部 的通信必须通过一个统一的对象进行。(PS:门面最好不要参与业务逻辑)。PS:如果一个系统有好几个子系统的话,每一个子系统有一个外观类,整个系统可以有数个外观类。实例:1、基金与股票:UML图:实现代码:子系统:package 门面模式基金与股票...原创 2019-04-14 21:39:13 · 186 阅读 · 0 评论 -
设计模式——观察者模式
一、定义: 定义对象间一种一对多的依赖关系,使得当一个对象改变章台,则所有依赖它的对象都会得到通知并被自动更新。二、几个角色名称:1、Subject:被观察者:职责:必须能动态的添加、删除被观察者。2、Observer:观察者:职责:收到消息后更新3、ConcreteSubject:具体的被观察者:定义被观察者自己的业务逻辑。4、ConcreteObserver:...原创 2019-04-29 22:22:06 · 154 阅读 · 0 评论 -
设计模式——状态模式
一、定义: 当一个对象的内在状态发生变化时线性改变其行为。这个对象看起来像是改变了其类。二、UML图: 三、组成:1、上下文Context:维护以个具体状态的实例,这个实例维护当前的状态。2、State 抽象状态类:定义一个接口来封装与Context的一个特定状态相关的行为。3、ConcreteState具体状态:每个...原创 2019-04-29 22:17:53 · 202 阅读 · 0 评论 -
设计模式——(观察者模式)Java实现委托与事件
一、定义 : 委托是对函数的封装,可以当作给方法的特征指定一个名称。事件是委托的一种特殊形式,当发生有意义的事情时,事件对象处理通知过程。示例:猫来了,老鼠大喊:老猫来了,快跑!C#实现代码:using System; class Cat{ private string name; public Cat(string name) { this....原创 2019-04-29 22:26:13 · 515 阅读 · 0 评论 -
设计模式——抽象工厂模式
一、定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。二、角色组成:抽象产品角色、具体产品角色、场景类、抽象工厂角色、具体工厂角色;三、通用UML图:四、示例:不同数据库下操作不同的表(课本例子)1、抽象产品角色:IUser、IDeparment2、具体产品角色:AccessUser、OracleUser、AccessDeparme...原创 2019-04-29 23:12:53 · 101 阅读 · 0 评论 -
设计模式——适配器模式(本质:转换匹配,复用功能)
一、定义: 将一个类的接口转换成客户希望的另外的一个接口。Adapte模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。二、分类:1、对象适配器:松耦合UML图:2、类适配器:高耦合三、组成:1、目标角色:Target客户所期待的接口2、适配器角色:Adapter:内部包装一个Adaptee...原创 2019-05-06 20:59:25 · 407 阅读 · 0 评论 -
设计模式——装饰模式(本质:动态组合)
一、定义: 动态地给一个对象添加一些额外的职责,就增加功能而言,装饰模式比生成子类更加灵活。二、组成部分:抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象。具体构件(Concrete Component)角色:实现组件对象接口,通常就是被装饰器装饰的对象。装饰(Decorator)角色:持有一个构件(Component)对象的实例,...原创 2019-06-11 10:28:58 · 324 阅读 · 0 评论