![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
耗子肉
这个作者很懒,什么都没留下…
展开
-
设计模式14,状态模式、设计模式之间的关联和区别
目录状态模式设计模式之间的联系及区别单例模式和工厂模式单例模式和享元模式外观模式和中介者模式外观模式和单例模式外观模式和抽象工厂模式装饰者模式和代理模式装饰者模式和适配器模式适配器模式和外观模式享元模式和代理模式享元模式和单例模式组合模式和访问者模式桥接模式和组合模式桥接模式和适配器模式适配器模式和代理模式模板方法模式和工厂方法模...原创 2020-03-03 16:54:41 · 272 阅读 · 0 评论 -
设计模式13,中介者模式、责任链模式、访问者模式
目录中介者模式责任链模式访问者模式中介者模式定义一个封装一组对象如何交互的对象。通过使对象明确的相互引用来促进松散耦合,并允许独立的改变它们的交互。类型:行为型使用场景:系统中对象之间存在复杂的引用关系,产生的相互依赖关系结构混乱且难以理解。交互的公共行为,如果需要改变行为,则可以增加新的中介者类。优点:将一对多转化成一对一,降低程序复杂度。类之间解耦。缺点:中...原创 2020-03-03 15:32:58 · 267 阅读 · 0 评论 -
设计模式12,观察者模式、备忘录模式、命令模式
观察者模式定义了对象之间一对多的依赖,让多个观察者对象同时监听一个主题对象,当主体对象发生改变时,他的所有依赖者(观察者)都会收到通知并更新。类型:行为型使用场景:关联行为场景,建立一套触发机制。优点:观察者和被观察者之间建立了一个抽象的耦合。支持广播通信。缺点:观察者之间有过多的细节依赖、提高时间消耗及程序复杂度。注意避免循环调用。例子:public class C...原创 2020-03-03 11:38:06 · 322 阅读 · 0 评论 -
设计模式11,迭代器模式、策略模式、解释器模式
目录迭代器模式策略模式解释器模式迭代器模式提供一种方法,顺序访问一个集合对象的各个元素,又不暴露该对象的内部表示。简单来说就是遍历。类型:行为型使用场景:访问一个集合对象的内容而无需暴露它的内部表示。为遍历不同的集合结构提供一个统一的接口。优点:分离了集合对象的遍历行为。缺点:类的个数成对增加。例子:public class Game { pr...原创 2020-03-01 19:46:33 · 362 阅读 · 0 评论 -
设计模式10,代理模式、模板方法模式
目录代理模式模板方法模式代理模式为其他对象提供一种代理,以控制对这个对象的访问。代理对象在客户端和目标对象之间起到中介的作用。类型:结构型使用场景:保护目标对象。增强目标对象。优点:能将代理对象与真实被调用的目标对象分离。一定程度上降低了系统的耦合度,扩展性好。保护目标对象。增强目标对象。缺点:会造成系统设计中类的数量增加。在客户端和目标对象之间增加代理对象,会造成...原创 2020-03-01 16:45:42 · 345 阅读 · 0 评论 -
设计模式9,享元模式、组合模式、桥接模式
目录享元模式组合模式桥接模式享元模式提供了减少对象数量从而改善应用所需的对象结构的方式。运用共享技术有效的支持大量细粒度的对象。简单说就是减少创建对象的数量,减少内存的占用,提高性能。类型:结构型使用场景:常用于系统底层开发,以解决系统的性能问题。系统有大量相似对象,需要缓冲池的场景。优点:减少对象创建,降低内存中对象的数量,降低系统的内存,提高效率。减少内存之外其...原创 2020-02-29 21:49:39 · 274 阅读 · 0 评论 -
设计模式8,外观模式、装饰者模式、适配器模式
目录外观模式装饰者模式适配器模式外观模式外观模式提供了一个统一的接口,用来访问子系统中的一群接口。类型:结构型使用场景:当子系统越来越复杂的时候,增加外观模式可以提供简单调用接口。构建多层系统结构的时候,利用外观对象作为每层的入口,简化层间调用。优点:简化调用过程,无需深入了解子系统,防止带来风险。减少系统以来,松散耦合。更好的划分访问层次。符合迪米特法则。缺点...原创 2020-02-29 15:21:36 · 218 阅读 · 0 评论 -
设计模式7,单例模式(下)
目录基于容器的单例模式基于ThreadLocal的线程“单例”单例模式在代码中的应用基于容器的单例模式public class ContainerSingleton { private static Map<String , Object> singletonMap = new HashMap<>(); public static vo...原创 2020-02-28 18:03:50 · 112 阅读 · 0 评论 -
设计模式6,单例模式(中)
目录序列化和反序列化反射枚举单例接下来说一下破坏单例模式的办法和解决途径。序列化和反序列化public class Test { public static void main(String[] args) throws IOException, ClassNotFoundException { HungrySingleton instance =...原创 2020-02-28 17:30:31 · 93 阅读 · 0 评论 -
设计模式5,单例模式(上)
类型:使用场景:优点:缺点:例子:用到设计模式的源码:原创 2020-02-28 15:45:21 · 109 阅读 · 0 评论 -
设计模式4,建造者模式、原型模式
建造者模式将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。用户只需指定需要建造的类型,不需要知道建造过程及细节。建造者模式和工厂模式的区别在于,建造者模式在乎方法的调用顺序、可以创造各种不同的由不同的复杂部件组成的产品,工厂模式注重创建产品、创建出的产品都一个样子。总的来说就是,当一个对象创建需要很多步骤时,适合建造者模式,只需要一个简单的方法就可以创建的,用工厂...原创 2020-02-27 23:54:06 · 133 阅读 · 0 评论 -
设计模式3,简单工厂、普通工厂、抽象工厂
目录简单工厂模式工厂模式抽象工厂简单工厂模式由一个工厂对象决定创建出哪一种产品类的实例。工厂对象根据入参来决定返回哪一种对象。类型:创建型,但不属于GOF23种设计模式。简单工厂更像是一种编码风格或是习惯。使用场景:工厂类负责创建的对象比较少。客户端(应用层)只知道传入工厂类的参数,不关心创建对象的逻辑。优点:只需要传入一个正确的参数,就可以获取你所需要的对象,无须...原创 2020-02-27 18:23:33 · 243 阅读 · 0 评论 -
设计模式2,设计原则
1.开闭原则一个软件实体如类、模块、方法应该对扩展开放,对修改关闭。用抽象构建框架,用实现扩展细节。优点:提高软件系统的可复用性和可维护性。就是面对抽象变成,因为抽象相对来说是稳定的例子:public interface ICource { Integer getId(); String getName(); Double getPrice();}...原创 2019-12-31 00:02:52 · 141 阅读 · 1 评论 -
设计模式1,uml类图
Unified Modeling Language:统一建模语言,非专利的第三代建模和规约语言。是开放的方法,用于说明、可视化、构建和便携一个正在开发的面向对象的、软件密集系统的制品的开放方法。Class Diagram:用于表示类、接口、实例等之间相互的静态关系。UML箭头方向:子类指向父类实线——>继承虚线------>实现记忆技巧:空心三角箭头:实现或...原创 2019-12-30 22:56:36 · 116 阅读 · 1 评论