![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
常用设计模式(Java)
rookie_yanyu
这个作者很懒,什么都没留下…
展开
-
对象性能模式之享元模式
享元模式享元模式是池技术的重要实现方式,可以降低大量重复的、细粒度的类在内存中的开销。享元模式的优点大幅度减少内存中对象的数量,降低程序内存的占用,提高性能。享元模式的缺点享元模式增加了系统的复杂性,需要分出外部状态和内部状态。享元模式将享元对象的状态外部化,而读取外部状态使得运行时间变长。享元模式的使用场景系统有大量的相似对象,这些对象耗费大量的内存。细粒度的对象都具备较接近的外部状态,而内部状态与环境无关,即对象没有特定身份。需要缓冲池的场景。示例代码棋子接口pub原创 2021-07-29 23:53:06 · 87 阅读 · 0 评论 -
对象创建之工厂方法
工厂方法定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到其子类。工厂方法的优点良好的封装性,代码结构清晰。优秀的可扩展性。屏蔽产品类。产品类的实现如何变化,调用者都不需要关心。只需要关心产品接口。工厂方法模式是典型的解偶框架。高层模块只需要知道产品的抽象类,其他实现类都不用关心。工厂方法的使用场景工厂方法模式是new一个对象的替代品,因此所有需要生成对象的地方都可以使用。需要灵活的、可扩展的框架时,可以考虑采用工厂方法模式。工厂方法可以用在异构项目原创 2021-07-27 23:36:39 · 131 阅读 · 0 评论 -
单一职责模式之桥模式
桥模式将抽象和实现解耦,使得两者可以独立地变化。桥模式的优点抽象和实现分离是桥模式的主要特点,是为了解决继承的缺点而提出的设计模式。实现对客户透明,客户端不用关系细节的实现。提高灵活性和扩展性。使用场景如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的联系。设计要求实现化角色的任何改变不应当影响客户端。一个构件有多于一个的抽象化角色和实现化角色,系统需要它们之间进行动态耦合。不希望或不适合使用继承的场合。示例代码抽象图形类p原创 2021-07-26 23:47:44 · 60 阅读 · 0 评论 -
单一职责模式之装饰器模式
装饰器模式动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式比生成子类更为灵活。装饰器的优点装饰类和被装饰类可以独立发展,而不会相互耦合。装饰器模式是继承关系的一个替代方案。装饰器模式可以动态地扩展一个实现类的功能。装饰器的缺点多层装饰是比较复杂的。装饰器的使用场景。需要扩展一个类的功能,或给一个类增加附加功能。需要动态地给一个对象增加功能,这些功能可以在动态地撤销。需要为一批类进行改装或加装功能。装饰器模式是对继承的有力补充。单纯使用继承时,在一些情况下就会增加原创 2021-07-22 23:57:09 · 88 阅读 · 0 评论 -
组件协作之观察者模式
观察者模式定义又叫做发布订阅模式。项目中经常使用。定义了对象间的一对多的依赖关系,每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。观察者模式的优点观察者和被观察者之间是抽象耦合。耦合关系通过接口来维系。支持广播通信。观察者模式的缺点如果一个主题有多个直接或者间接的观察者,则通知所有的观察者会花费很多时间,且开发和调试都比较复杂。如果主题之间有循环依赖,被观察者会触发它们之间进行循环调用,导致系统崩溃。如果对观察者的通知是通过另外的线程进行异步投递的,系统必须原创 2021-07-20 00:02:41 · 78 阅读 · 0 评论 -
单例模式
单例模式介绍 单例模式是常用的设计模式之一。 作用就是确保一个类就这一个实例,并自行实例化且向整个系统提供这个实例。 两种类型:饿汉式(类加载时就进行对象实例化)、懒汉式(第一次引用类时才进行对象实例化)。 饿汉式资源利用效率上稍差,但是速度和反应时间上稍好。饿汉式容易在Java中实现,不易在C++中实现。Java中一般默认是懒汉式,但是饿汉式才更加符合Java语言的特点。代码饿汉式public class Singleton{ // 类加载时直接对象实例化 private st原创 2021-03-12 16:41:49 · 66 阅读 · 0 评论 -
代理模式
代理模式简介代理模式是常用的设计模式。能够在不改变源代码的情况下对系统进行功能扩展。Java中代理模式分:静态代理和动态代理。动态代理使用Java反射机制实现,目前还没完全掌握。。。这里就讨论静态代理吧。示意图代码分析中间接口// 接口:沟通具体实现类和代理类,系统的设计仅仅依赖于该接口,// 而不关心接口中方法的具体实现,该接口可以看做不变的事物,// 具体实现类是在业务变更时频繁改变的。// 此时实现了代理类和具体实现类之间的松耦合。public interface IGameP原创 2021-03-07 19:38:29 · 94 阅读 · 1 评论