
设计模式
&罗毅
灵机一动即是天机
展开
-
静态代理
核心:使用代理类对目标类进行增强,代理类在程序运行前就已经定义好.java 源文件,其与目标类的关系在 程序运行前就已经确立。在程序运行前代理类已经编译为.class 文件。 缺点:1,代理类和目标类实现了相同的接口,每个代理都需要实现目标类的方法,这样就出现了大量的代 码重复。如果接口增加一个方法,除了所有目标类需要实现这个方法外,所有代理类也需要实现 此方法。增加了代码维护的复杂度。 2,代理类只服务于一种类型的目标类,如果要服务多个类型。势必要为每一种目标类都进行代理, 静...原创 2020-12-10 14:59:46 · 219 阅读 · 1 评论 -
桥接模式
核心:将两个独立变化的维度分开,只让他们在各自的维度变化,实现了两个类的松耦合 import javafx.scene.control.RadioButton; import sun.security.provider.SHA; import java.awt.image.ColorConvertOp; import java.sql.*; import java.util.ArrayList; public class Test{ public static void main原创 2020-12-10 14:16:24 · 109 阅读 · 0 评论 -
装饰器模式
核心:在原有类的基础是增加装饰类完成更加复杂的功能 import sun.security.provider.SHA; import java.util.ArrayList; public class Test{ public static void main(String[] args) { Decorator decorator1 = new RedDecorator(new Circle()); Decorator decorator2 =原创 2020-12-09 16:19:03 · 72 阅读 · 0 评论 -
观察者模式
核心:当一个对象的状态发生变化后,这个对象所以依赖的所有对象都将接收到通知 import java.util.ArrayList; public class Test{ public static void main(String[] args) { Star star = new Jay(); Fan liuXin = new LiuXin(); Fan luoYi = new LuoYi(); star.addFan原创 2020-12-09 16:13:59 · 68 阅读 · 0 评论 -
责任链模式
核心: 责任链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将整个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。我们可以把各位领导想象成一条链,从链的开头传递请求到尽头,直到业务逻辑处理完成。链上的每个节点都可以设置自己处理的指标范围,也可以设置下一任处理者节点。最显著的好处就是请求者不用知道到底是哪个对象处理的,反正提交请求就对了。同时链中的处理者并不知道整条链的结构,他们只需要保持一个指向下一任处理者对象的引用,这样非常大的降低了耦合...原创 2020-12-08 22:39:34 · 794 阅读 · 0 评论 -
模板模式
核心:子类重写父类特定的方法完成一套个性化配置 class Parent{ public void step1(){ System.out.println("早上起床"); } public void step2(){ System.out.println("吃早饭"); } public void step3(){ System.out.println("跑步"); } public void.原创 2020-12-08 16:22:37 · 72 阅读 · 0 评论 -
单例模式
1,线程安全的懒汉模式(双重检验) class Singleton{ private static Singleton singleton; private Singleton(){} public Singleton create(){ if(singleton == null){ synchronized (Singleton.class) { if(singleton == null){原创 2020-12-08 14:55:13 · 71 阅读 · 0 评论 -
工厂模式
1,简单工厂模式 核心:将产品抽象出来,使用工厂创建产品 (创建型模式,依赖倒置,开闭原则) public class Test { public static void main(String[] args) throws IOException { Factory factory = new Factory(); Clothes cls = factory.create("pants"); cls.s.原创 2020-12-08 14:27:32 · 139 阅读 · 0 评论