
技术_设计模式
设计模式针对性教程,针对有一定开发经验的,一些没太大用的模式,什么原型啊,享元啊等都做了简略处理
csdn_yuan88
这个作者很懒,什么都没留下…
展开
-
设计模式20_观察者
意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。何时使用:一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知。观察者模式的主要角色如下。抽象主题(Subject)角色:也叫抽象目标类,它提供了...原创 2019-04-13 23:17:14 · 1658 阅读 · 0 评论 -
设计模式19_状态
在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。创建一个 State 接口和实现了 State 接口的实体状态类。Context 是一个带有某个状态的类。StatePatternDemo,我们的演示类使用 Context 和状态...原创 2019-04-13 23:16:36 · 1669 阅读 · 0 评论 -
设计模式18_责任链
避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。主要解决:职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递,所以职责链将请求的发送者和请求的处理者解耦了。实例:我们创建抽象类 AbstractLogger,带有详细的日志记录级别。然后我们创建三种类型的记录...原创 2019-04-13 10:26:52 · 1673 阅读 · 0 评论 -
设计模式17_命令模式
17_命令命令(Command)模式的定义如下:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。举例: 首先创建作为命令的接口 Order,然后创建作为请求的 Stock 类。实体命令类 BuyStock 和 SellStock,实现了 Order 接口,将执行实际的命令处理。创建作为调...原创 2019-04-13 10:26:35 · 1744 阅读 · 0 评论 -
设计模式16_策略模式
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。介绍意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。主要解决:在有多种算法相似的情况下,使用 if......原创 2019-04-11 13:36:07 · 1768 阅读 · 0 评论 -
设计模式15_模板
在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业务、对银行工作人员进行评分等,其中取号、排队和对银行工作人员进行评分的业务对每个客户是一样的,可以在父类中实现,但是办理具体业务却因人而...原创 2019-04-11 13:35:16 · 1626 阅读 · 0 评论 -
设计模式14_组合结构
组合(Composite)模式的定义:有时又叫作部分-整体模式,它是一种将对象组合成树状的层次结构的模式,用来表示“部分-整体”的关系,使用户对单个对象和组合对象具有一致的访问性。典型案例,树结构,二叉树等,每个节点都实现同样接口。...原创 2019-04-11 08:52:18 · 1658 阅读 · 0 评论 -
设计模式13_享元模式
享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。简单来说,有则使用,无则新建。...原创 2019-04-11 08:51:46 · 1696 阅读 · 0 评论 -
设计模式12_外观模式
外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。举例:创建一个 Shape 接口和实现了 Shape 接口的实体类。下一步是定义一个外观类 ShapeMaker。S...原创 2019-04-11 08:51:08 · 1664 阅读 · 0 评论 -
设计模式11_装饰器
装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。主要解决:一般的,我们为了扩展一个类经常使用...原创 2019-04-11 08:50:16 · 1674 阅读 · 0 评论 -
设计模式10_桥接
桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。意图:将抽象部分与实现部分分离,使它们都可以独立的变化。主要解决:在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起...原创 2019-04-11 08:49:29 · 1663 阅读 · 0 评论 -
设计模式09_代理模式
意图:为其他对象提供一种代理以控制对这个对象的访问。主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。实现我们将创建一个 Image 接口和实现了 Image 接口的...原创 2019-04-11 08:48:39 · 1675 阅读 · 0 评论 -
设计模式08_适配器
意图:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。主要解决:主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的举例:有一个 MediaPlayer 接口和一个实现了 MediaPlayer 接口的实体类 AudioPlayer。默认情况下,AudioPlayer 可以播放 m...原创 2019-04-11 08:47:31 · 1637 阅读 · 0 评论 -
设计模式07_建造者
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。注意事项:与工厂模式的区别是:建造者模式更加关注与零件装配的顺序。最核心的是builder和dirctordirectorclas...原创 2019-04-10 12:16:49 · 1718 阅读 · 0 评论 -
设计模式06_原型
利用已有的一个原型对象,快速地生成和原型对象一样的实例。原型模式是通过拷贝一个现有对象生成新对象的。浅拷贝实现 Cloneable,重写,深拷贝是通过实现 Serializable 读取二进制流。典型应用 public Object clone() { Object clone = null; try { clone = super.clone(...原创 2019-04-10 12:16:01 · 1620 阅读 · 0 评论 -
设计模式05_单例
这个没太多可以看的,就是创建对象。这个对象特殊之处在于全局就一个实例,这里暗坑比较多,最好的方法,使用时直接copy过来模板就行了。静态内部类,多线程安全,代码简洁,最保险版本public class Singleton { private static class SingletonHolder { private static final Singleton...原创 2019-04-10 12:15:34 · 1658 阅读 · 0 评论 -
设计模式04_抽象工厂
抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。按照工厂的方式,只提炼干货看起来负责,真正的内容只是AbstractFactory的实现部分,这里个工厂返回的是工厂,所以抽象工厂其实更适合称之为“双层工厂" 代码样例:第一层public c...原创 2019-04-10 12:13:56 · 1630 阅读 · 0 评论 -
设计模式02_概览
六大原则1、开闭原则(Open Close Principle)开闭原则的意思是:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。2、里氏代换原则(Liskov Substitution Principle)里氏代换原则是...转载 2019-04-10 12:12:46 · 1657 阅读 · 0 评论 -
设计模式03_工厂
意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。主要解决:主要解决接口选择的问题。何时使用:我们明确地计划不同条件下创建不同实例时。如何解决:让其子类实现工厂接口,返回的也是一个抽象的产品。关键代码:创建过程在其子类执行。应用实例: 1、您需要一辆汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里...原创 2019-04-10 12:11:30 · 1747 阅读 · 0 评论 -
设计模式01_原因
第一,虽然网上有很多教程,但大都不得要领,导致设计模式看起来非常复杂,就个人而言,从毕业到现在,反复学习过不下10遍,但由于工作中使用场景有限,不久就又忘记了。所以计划整理出一个适合个人的学习or复习的教程。第二,设计模式,本来是渐进的演化,或者基于需求驱动的,而非静态的结构 也就是说应该是原有结构-》遇到xx问题-》演变成xx结构,最终演变成的xx结构,就是我们常看到的最终设计模式,但实际开发...原创 2019-04-10 12:09:42 · 1676 阅读 · 0 评论