设计模式
yang_zzu
这个作者很懒,什么都没留下…
展开
-
责任链模式
为请求创建了一个接受对象的链。责任链,实体类/** * 责任链,实体类 * Create by yang_zzu on 2020/7/19 on 19:46 */public class Request { private boolean loggedOn; private boolean frequentOk; private boolean isPermits; private boolean containsSensitiveWords;...原创 2020-07-20 15:20:16 · 156 阅读 · 0 评论 -
观察者模式
定义了对象之间的一对多依赖,让多个观察者对象同时监听某一个主题对象,当主题对象发生变化时,它的所有依赖者都会收到通知并更新。简单的说就是,一个主题对象里面有多个依赖者,主题对象发生改变的时候,向依赖者通知并更新应用:当更改一个对象的状态可能需要更改其他对象,并且实际的对象集实现未知 或 动态更改时,使用观察者模式优点:1.符合开闭原则2.可以在运行时建立对象之间的关系观察者,需要实现的接口:/** * 观察者,需要实现该接口 * 接口 * Cr...原创 2020-07-13 17:14:43 · 154 阅读 · 0 评论 -
模板方法模式
定义一个操作的算法那骨架,而将一些步骤延迟到子类中,Template Method 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。工厂方法模式:对象的创建,产品的创建模板方法模式:某些特定的步骤延迟到子类抽象类,定义方法与步骤/** * 模板方法,抽象类,定义了方法 * Create by yang_zzu on 2020/7/13 on 14:55 */public abstract class AbstractClass { public...原创 2020-07-13 15:30:56 · 133 阅读 · 0 评论 -
策略模式
目录v1:方式简单,可重用行差v2:方式复杂,重用行强v3:定义了算法族,分别封装起来,让他们之间可以相互替换,此模式的变化独立于算法的使用者v1:方式简单,可重用行差抽象类,父类:/** * 定义策略抽象类, * 其他的僵尸,都是该类的子类 * Create by yang_zzu on 2020/7/13 on 9:40 */public abstract class AbstractZombie { public abstract void di.原创 2020-07-13 14:44:24 · 140 阅读 · 0 评论 -
装饰器模式
在不改变原有对象的基础上,将功能附加到对象上基本功能的接口:/** * 定义一个接口 * Create by yang_zzu on 2020/7/12 on 20:21 */public interface Component { void iperation();}抽象类,继承该接口:/** * 因为是抽象类需使用 implements 可以不实现接口 * 用于被其他类继承,然后获得 Component 的属性 * Create by yang_z..原创 2020-07-12 20:59:29 · 179 阅读 · 0 评论 -
适配器模式
目录对象创建方式:继承方式:将一个类的接口转成客户希望的另一个接口,Adapter 使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。两个版本,一个使用对象的创建,一个使用继承的方式对象创建方式:需要转换的类:/** * Create by yang_zzu on 2020/7/12 on 17:43 */public class Adaptee { public int ouput220v() { return 220; .原创 2020-07-12 20:13:03 · 131 阅读 · 0 评论 -
门面模式
为子系统中的一组接口提供一个一致的接口,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用子系统接口1:/** * Create by yang_zzu on 2020/7/12 on 16:50 */public class SubSystem1 { public void method1() { System.out.println("com.sys.DesignPatterns.Facade.SubSystem1.method1 ....原创 2020-07-12 17:31:59 · 142 阅读 · 1 评论 -
享元模式
享元模式:运用共享技术有效地支持大量细粒度的对象优点:如果系统有大量类似的对象,可以节省大量的内存及cpu资源设计场景:比如吃鸡游戏中,有很多的树,但是树的种类就那么多,只是分散在不同的位置,然后形成了一个一个的小树林。树:/** * Create by yang_zzu on 2020/7/8 on 21:08 */public class Tree { //树的名称 private final String name; //该数一..原创 2020-07-08 21:29:06 · 94 阅读 · 0 评论 -
原型模式
目录浅拷贝:深拷贝:序列化深拷贝:原型模式:指原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。简单的来说就是 实体类 的复制操作。(在复制成百上千个时候,并且类的属性比较多的时候,会比较麻烦,原型模式能很好的解决这种问题。)主对象:import java.io.*;/** * 原型模式 * Create by yang_zzu on 2020/7/8 on 19:19 */public class Product implements ..原创 2020-07-08 20:53:05 · 409 阅读 · 0 评论 -
建造者模式
模式定义:将一个复杂的创建与他的表示分离,使得同样的构建过程可以创建不同的表示场景:1.需要生成的对象具有复杂的内部结构2.要生成的对象内部属性本身相互依赖优点:1.建造者独立,易扩展2.便于控制细节风险在对象构建的过程中是有一定的先后顺序的简单的构建者需要构建的对象,以及内部类构建方法的实现/** * 在对象构建的过程中是有一定的先后顺序的 * Create by yang_zzu on 2020/7/7 on 20:09 */public c.原创 2020-07-08 10:56:23 · 103 阅读 · 0 评论 -
抽象工厂模式
抽象工厂模式,提供一个创建一系列相关 或 相互依赖对象的接口,而无需指定他们具体的类应用场景:程序需要处理不同系列的相关产品, 但是不希望它依赖于这些产品的具体类1. 可以确信,从工厂得到的产品彼此之间是兼容的2. 可以避免具体产品和客户端代码之间的紧密耦合3. 单一职责4. 开闭原则以数据库连接为例进行抽象工厂模式的测试:连接接口:/** * Create by yang_zzu on 2020/7/7 on 9:10 */public interface.原创 2020-07-07 10:37:45 · 891 阅读 · 0 评论 -
工厂模式
通用代码定义一个产品接口public interface Product { public void method1();}产品Apublic class ProductA implements Product{ @Override public void method1() { System.out.println(" ProductA.method1 executed......... "); }}产品B原创 2020-07-06 21:28:25 · 756 阅读 · 0 评论 -
单例模式
目录A、懒加载方式B、饿汉方式C、静态内部类D、枚举方式A、懒加载方式不能防止通过反射方式创实例。对象。/** * 懒加载 * Create by yang_zzu on 2020/6/28 on 17:24 */public class LazySingleton { /** * volatile * 防止字节码加载的时候发生指令重排序 * 1. 分配空间 * 2. 初始化 * 3. 引用赋值 ...原创 2020-06-28 20:38:36 · 251 阅读 · 0 评论