设计模式
代理模式 将realImage通过proxyImage来调用。
realImage与proxyImage在功能上是等价的,没有新增和减少功能。
适配器模式 VlcPlayer, MP4Player的适配类。这样在AudioPlayer中只需要调用适配类来完成功能,同代理类的区别在于,AudioPlayer新增了适配的功能,代理类不能改变所代理类的功能。
适配器的核心在于将两个不相关的类整合到一起去。实现某一个类的功能的叠加。
就是说AudioPlayer要具有AdvancedMediaPlayer的功能。那就要创建一个AdvancedMediaPlayer的适配类。
装饰器模式 扩展了被装饰类的功能。装饰器跟代理类有点类似,但是传递的参数不太一样,装饰器传递的是被装饰的类,代理类则要隐藏被代理的类,传递的参数是被代理的类需要的参数。
关于工厂模式:静态工厂方法,享元模式(相当于单例模式)
package pattern.factory; public class FoodFactory { // 方式一 public static Food getFood(String type) throws InstantiationException, IllegalAccessException, ClassNotFoundException { if (type.equalsIgnoreCase("mcchicken")) { return McChicken.class.newInstance(); } else if (type.equalsIgnoreCase("chips")) { return Chips.class.newInstance(); } else { System.out.println("哎呀,找不到相应的实例化类啦"); return null; } } // 方式二 public static Food getInstance(String name) throws InstantiationException, IllegalAccessException, ClassNotFoundException { return (Food) Class.forName(name).newInstance(); } // 方式三 public Food getFoodInstance(String type) { if (type == null) { return null; } if (type.equalsIgnoreCase("mcchicken")) { return new McChicken(); } else if (type.equalsIgnoreCase("chips")) { return new Chips(); } return null; } }
享元模式:
public class ShapeFactory { private static final HashMap<String, Shape> circleMap = new HashMap<String, Shape>(); public static Shape getCircle(String color) { Circle circle = (Circle) circleMap.get(color); if (circle == null) { circle = new Circle(color); circleMap.put(color, circle); System.out.println("Creating circle of color:" + color); } return circle; } }
区别在于:
工厂模式创建了不同的对象,但是享元模式根据不同的参数,公用同一个对象。
策略模式是对接口的简单应用,模板模式是对抽象类的应用。
组合模式及责任链都是对自身的引用。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
2014-03-13 load Event
2014-03-13 asyncronous loading javascript