
设计模式
哈特谢普苏特
海上生明月
展开
-
责任链模式学习记录
//责任链模式 为请求创建一个接收者对象的链 确保对象总是会被处理 如Android中的事件分发机制,OKHTTP中的网络处理 在以下的例子中,为了构建责任链模式,还使用到了建造者模式 public class ChainOfResponsibility { //责任链模式 为请求创建一个接收者对象的链 //首先是访问频率其次是登录 public static void main(String[] args) { Request request = ne.原创 2020-10-09 09:31:54 · 159 阅读 · 0 评论 -
观察者模式学习记录
//观察者模式 //定义了对象之间的一对多以来,让多个观察者对象舰艇某一个主题对象,党主题对象发生变化时,它的所有依赖者都会收到通知并更新 //如Android中的ListView RecycleView点击事件 //优点 1.符合开闭原则 2.可以在运行时就建立对象之间的关系 import java.util.ArrayList; import java.util.List; public class Observe { //观察者模式 //定义了对象之间的一对多以来...原创 2020-10-08 16:39:46 · 164 阅读 · 2 评论 -
模板模式学习记录
//模板方法模式 //定义一个操作的算法骨架,而将一些步骤延迟到子类中 使得子类可以不改变一个算法的结构就可重定义该算法的某些特定步骤 public class Model { //模板方法模式 //定义一个操作的算法骨架,而将一些步骤延迟到子类中 使得子类可以不改变一个算法的结构就可重定义该算法的某些特定步骤 public static void main(String[] args) { AbstractClass abstractClass = n..原创 2020-10-08 14:53:15 · 135 阅读 · 0 评论 -
策略模式学习记录
策略模式 定义了算法族 分别封装起来 让它们之间可以互相替换 此模式的变化独立于算法的使用者 public class Strategy { //策略模式 定义了算法族 分别封装起来 让它们之间可以互相替换 此模式的变化独立于算法的使用者 public static void main(String[] args) { Zombie zombie = new NormalZombie(); zombie.display(); ..原创 2020-10-06 17:09:51 · 120 阅读 · 0 评论 -
装饰者模式学习记录
装饰者应用场景 扩展一个类的功能或给一个类添加附加职责 优点 1.不改变原有对象的情况下给一个对象扩展功能 2.使用不同的组合可以实现不同的效果 3.符合开闭原则 注意 在新的装饰器中要调用原来的方法 否则是不正确的 public class Decorator { //装饰者应用场景 扩展一个类的功能或给一个类添加附加职责 /* 优点 1.不改变原有对象的情况下给一个对象扩展功能 2.使用不同的组合可以实现不同的效果 ..原创 2020-10-06 15:27:06 · 111 阅读 · 0 评论 -
享元模式学习记录
享元模式 //运用共享技术有效地支持大量细粒度的对象 //优点:如果系统有大量类似的对象,可以节省大量的内存及CPU资源 源码 String Integer Long 不可变对象 import java.util.Map; import java.util.concurrent.ConcurrentHashMap; public class XiangYuan { public static void main(String[] args) { TreeNode no.原创 2020-09-22 16:43:34 · 118 阅读 · 0 评论 -
原型模式学习记录
指原型实例指定创建对象的种类,并且通过拷贝这些原型创建心的对象,最常见的就是深拷贝和浅拷贝,其中浅拷贝是只能拷贝基本类型和String类型的值和其它类型的地址,用这种方式拷贝的结果是原来的对象发生改变,当前对象也会有相应的改变。如果不希望当年的基本类型值被改变,可以通过final修饰,如代码所示。运行结果如下 public class BuilderUpdate { public static void main(String[] args) throws CloneNotSupport..原创 2020-09-22 10:23:54 · 126 阅读 · 0 评论 -
建造者模式学习
课程地址 建造者的流程如下,首先是有商品和相应的接口,接口中是各种抽象的方法,然后有builder负责实现接口中的各种方法,在由一个引导类负责实现一个商品的构建并完成和客户端的交互。 public class BuilderDemo { public static void main(String[] args) { DefaultProductBuilder defaultProductBuilder = new DefaultProductBuilder();原创 2020-09-21 09:54:30 · 140 阅读 · 0 评论 -
单例模式详解——参考B站课程
课程地址 单例模式是为了确保只有一个实例的存在,从而防止多个实例存在会对程序造成干扰或攻击。 1.懒汉模式 public class LazySingleTon { private static LazySingleTon singleTon; private LazySingleTon(){} public synchronized static LazySingleTon getInstance(){ if(singleTon == null)原创 2020-09-20 10:01:44 · 174 阅读 · 0 评论