大家好,今天来为大家解答简述:初探设计模式,入门必备这个问题的一些问题点,包括也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
我感觉此时的书更像是打通任督两条通道的武林秘籍。在日常工作中,我学到了一些杂七杂八的东西,但又无法融会贯通。所以你还是需要借助书籍来理清你的想法。这是写这篇文章的出发点,也是我的想法!
读完书后,将其转换成自己的语言并表达出来。可能会有错误(这是肯定的),但总比没有好。如果有同学能从中得到一些启发,那你就很幸运了!
我实际上试图用一句话来描述一种设计模式!
策略模式!
使用统一的事物作为基类,分离可变事物的行为。它们是通过基类中的变量引用的。通过委托变量,使用setter方法更改委托变量,使其行为可变。为接口而不是类编程。优点是使用同一个接口,通过传入不同的行为类可以产生不同的效果,可以很容易地改变行为。
观察者模式!
类似于发布-订阅模型。有一个注册服务和通知的过程。实现方法可以理解为:注册服务时,将观察者添加到队列中。当主题发生变化时,主题主动从观察者队列中依次调用,从而达到主动推送通知的作用。优点是观察者可以通过随时注册观察来实时接收消息,而被观察者对此一无所知,从而同时得到通知和解耦。
装饰图案!
以一个对象为主对象,生成后传入装饰器构造函数,装饰后输出的模式。该模式可以独立于许多离散方法进行组装,而不会影响其他更改。该模式是通过继承来实现的。装饰器模式的典型用途,继承Java io类,有多个主类和多个装饰类,方便用户操作想要的方法。优点是主要行为结果可以反复改变,而大方向不变。对于一些附加类的变化,可以通过这种模式轻松地重新处理数据。
工厂模式!
分为简单工厂模式-工厂模式-抽象工厂模式。所谓工厂模式,就是将所需产品与工厂结合起来,获得特定所需产品的过程,而不知道具体是谁生产该产品。工厂模式很好地重用了多个产品的可变性,避免了每个类单独实例化所带来的类分散的问题。或者从另一个角度来看,工厂只是一段高度可重用代码的抽象。这样做的好处是统一控制部分类的生成,避免类分散在代码的各个角落,从而使后期的升级和维护更加方便。
单例模式!
是全局只有一个实例对象的访问方法(单进程方法)。需要一个私有的构造函数,这样就无法在外部实例化,并且外部访问实例需要一个静态方法getinstance,这是一种延迟加载行为。不过要注意多线程并发的问题,从而创建两个实例,并使用synchronized同步方法或者volatile 来同步这个实例来解决并发问题,但这会导致应用程序性能下降100次。当应用程序中大量使用单例的时候,你就得考虑是否合理,因为适合单例的场景并不多。优点是减少了系统重复创建类时的性能开销和空间开销,并且可以在多个地方共享一些变量(如果需要的话)。
命令模式!
将请求作为对象传递给另一个对象以实现命令的执行方式。将请求和执行解耦,可以轻松实现命令集操作,或者宏操作和播放。可以轻松实现日志队列操作。这样做的好处是,通过将命令请求和命令执行分开,通常请求会很快完成,但执行可能不会。由于请求和执行是分离的,因此后续的补偿动作可以很容易地实现。
适配器模式!
即实现A接口转B接口的适配工作,如连接三角形插座、二脚插头等。适配器的意义在于,在不改变或无法改变现有接口的情况下,将新接口连接到现有环境。主要的。它的实现是适配器继承目标接口,传入适配接口,将适配接口的逻辑转换为目标接口的表达。可以继承多个接口来实现双向转换。优点是可以通过集成新厂家的东西来适应原来的方法,不需要改变现有的代码。
外观模式!
外观模式的目的是在不改变原有界面的情况下,提供简化的界面操作。它的实现是类包装器的简化。它遵循的设计原则是只与最亲近的人交谈。好处是把原来复杂多变的接口改造成少数实用的接口,这样外部调用的时候只做最简单的事情。
模板方法模式!
在父类接口中定义一个算法骨架或者运行过程,将子类特有的方法暴露为抽象方法,这样运行时就可以利用父类的运行过程来调用子类特有的方法。这种模式可以节省大量机械代码,使子类可以只关注自己独特的部分。在这个模式中,还有一个普通但重要的概念,hook。钩子在Java 中表现为只有一个空方法或一个默认实现的方法。只要子类重写这个方法,就可以触发钩子,从而实现开关控制和自己的意图。由于高层调用低层,所以有些操作并不明显。如果下层调用上层,就会很难理解设计。因此,要遵循一个原则,好莱坞原则,只有父类调用子类,不允许子类调用父类。所以如果你想知道为什么必须在框架中实现某个方法,你只需要去父类中查看它的调用即可,但是不允许私自调用父类方法。依赖倒置原理与此有些类似。优点是封装了复杂的流程,只提供可变方法供子类重写,从而在父类中调用,减少大量重复代码。
迭代器模式!
也就是说,一种实现类似迭代器接口的功能的方式,允许对象遍历元素而不需要关注内部实现。目前来说对我们来说应该没有什么意义,因为类似for in的语法已经可以达到这种效果了。个人觉得这种模式意义不大。优点是可以遍历内部结构,方便。组合模式!即将多个接口的方法组合成一个更大的接口,这样操作者无需关注其中的差异,只需调用同一个接口即可。然而,对于某些子类中不可用的方法需要抛出异常。启用外部捕获。你必须仔细考虑使用场景。这个功能在GUI编程中最为明显。当你拖动系统提供的几个组件在页面上组合成一个新的结构时,你就使用了组合模式。状态模式!与策略模式类似。它的作用是控制外部操作的内部状态流程而不让外部知道。它的操作其实就是解放了一系列的if else,让逻辑更加清晰。它的实现是关闭整个流程的所有状态。用户操作某个状态后,该状态只会做自己的事情,并将状态过渡到下一个状态。当用户执行下一步操作时,内部已经发生了变化,但对于类内部来说,操作仍然是单一状态,所以逻辑清晰。但这种模式会生成大量的状态类,增加大量的代码,并且需要抽象出好的状态,比较考验技术水平。它的作用是让逻辑更加清晰,更容易扩展。代理模式!即不是通过直接访问的方式来访问对象,而是通过代理来访问,让代理与具体的对象进行通信。通信完成后,将结果返回给访问者。这通常涉及到rmi远程调用。代理模式降低了系统的复杂度。程度(至少对于调用者而言)。虚拟代理、缓存代理、同步代理、防火墙代理、写时复制代理。代理模式在现实中应用非常广泛。它使我们免受许多复杂细节的影响。框架提供的代理让我们操作方便的同时也让我们傻了。复合模式!即,使用多个图案的组合的图案。这种模式不完全是一种模式,但也是框架中体现最多的模式,比如大名鼎鼎的mvc。组合策略、适配器、观察者、装饰器、组合模式、工厂等等。优点是在基本模式的基础上,封装了另一种实用的模式,以解决更具体的应用场景问题。 16.更多!
模式是在特定情况下针对特定问题的解决方案。其他模式,访客模式,中介模式,原型模式,桥接模式,责任链模式,反图案,即不好的图案,表面上看起来很好,但实际使用后会产生很大的问题。
来源:等待你的归来
链接:http://www.cnblogs.com/yougewe/p/8240977.html更多干货领取可关注公众号后回复“干货”即可免费领取海量干货
好了,文章到此结束,希望可以帮助到大家。
【简述:初探设计模式,入门必备】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
看了这本书以后感觉设计模式真的挺重要的!
有14位网友表示赞同!
终于开始探索一下设计模式了,这本 Head First 的书看起来很不错。
有13位网友表示赞同!
这种图文并茂的学习方式太适合我了!
有8位网友表示赞同!
Head First 系列的书总是很有趣,讲解也很透彻。
有7位网友表示赞同!
想了解设计模式就找 Head First 吧!
有13位网友表示赞同!
感觉这本头脑清醒的设计模式书籍一定会让我学到很多!
有20位网友表示赞同!
好久没接触过java了,现在开始学习设计模式,这本书能帮上忙吗?
有7位网友表示赞同!
之前看了点设计模式入门信息,感觉需要再深入了解。
有19位网友表示赞同!
期待把 Head First 设计模式读完,然后可以更好地理解代码结构!
有5位网友表示赞同!
我已经对软件架构感到困惑了,希望这本头脑清醒的书能给我一些启发。
有9位网友表示赞同!
学习设计模式需要扎实的理论基础吗?
有7位网友表示赞同!
这本书会介绍各种常见的软件设计模式吗?
有19位网友表示赞同!
听说 Head First 的书很浅显易懂,对入门者来说很棒!
有17位网友表示赞同!
感觉设计模式这个东西很有用,但总是不知道从哪里开始学习。
有6位网友表示赞同!
这本 Head First 设计模式看起来挺有意思的!
有20位网友表示赞同!
希望这本书能让我更好地理解代码设计的道理。
有20位网友表示赞同!
之前做过一些编程小项目,想尝试一下更复杂的软件开发。期待这本书能给我带来帮助!
有7位网友表示赞同!
学习设计模式是提升编程水平的必经之路吗?
有18位网友表示赞同!
感觉软件工程的世界越来越复杂了,需要学习设计模式来应对!
有14位网友表示赞同!