当前位置: 首页 > news >正文

做直播的小视频在线观看网站潍坊高端网站建设价格

做直播的小视频在线观看网站,潍坊高端网站建设价格,淳安县千岛湖建设集团网站,百度联盟怎么赚钱一、什么是设计模式简单点说,设计模式(Design Pattern)就是前人踩坑总结出来的、能反复用的、解决常见软件设计问题的套路。它就是一套被验证过很多次的“万能方案”,有了它你写程序就不会瞎写,而是用一套聪明的、优雅的思路去组织代码&#…

一、什么是设计模式

简单点说,设计模式(Design Pattern)就是前人踩坑总结出来的、能反复用的、解决常见软件设计问题的套路。它就是一套被验证过很多次的“万能方案”,有了它你写程序就不会瞎写,而是用一套聪明的、优雅的思路去组织代码,让程序更好写、更好维护、更容易扩展。

二、为啥要学设计模式?

因为做项目的时候,总是会碰到这些场景:有些对象只想要一个(单例 Singleton);有时想根据需求创建不同的对象(工厂 Factory);有两个模块接口对不上,需要接个“转接头”(适配器 Adapter);有时候需要让别人替你干活,还要做点额外事(代理 Proxy

三、设计模式大致分几类?

分类中文名英文名一句话定位
创建型(5 种)单例Singleton全局只有一个实例
简单工厂*Simple Factory*用一个工厂方法生产对象
工厂方法Factory Method让子类决定创建哪个具体实例
抽象工厂Abstract Factory创建“一族”相互依赖的对象
建造者Builder按步骤组装复杂对象
原型Prototype通过克隆而不是 new 来创建
结构型(7 种)适配器Adapter把旧接口转换成客户端期望的新接口
桥接Bridge抽象与实现分离,两者可独立变化
组合Composite把对象组合成树形结构表示“整体-部分”
装饰Decorator动态地给对象加功能,比继承灵活
外观Facade对外统一高层接口,隐藏子系统复杂度
享元Flyweight共享细粒度对象,节省内存
代理Proxy用一个占位对象控制对真实对象的访问
行为型(11 种)责任链Chain of Responsibility请求沿链传递,直到被处理
命令Command把请求封装成对象,实现参数化与撤销
解释器Interpreter定义语言的文法并解释执行
迭代器Iterator顺序访问聚合元素,不暴露其内部结构
中介者Mediator对象间不直接通信,统一由中介转发
备忘录Memento保存对象状态,可恢复
观察者Observer一对多状态变化通知
状态State状态改变时行为跟着改变
策略Strategy封装算法族,可动态互换
模板方法Template Method算法骨架固定,把步骤延迟到子类
访问者Visitor不改变类结构即可扩展其操作

单例模式(Singleton Pattern)

单例模式的核心思想:自己管自己,全局唯一。保证一个类在整个程序中只有一个实例,并且提供一个全局访问点。

系统中只能有一个对象的时候使用,比如:线程池、配置管理器、日志对象、数据库连接池。

public class Singleton {private static volatile Singleton instance; // 加 volatile 保证可见性和防止指令重排private Singleton() {} // 私有构造public static Singleton getInstance() {if (instance == null) {synchronized (Singleton.class) {if (instance == null) {  // 双重检查instance = new Singleton();}}}return instance;}
}

工厂模式(Factory Pattern)

把对象的创建过程封装起来,把“new”操作交给工厂,客户端只需要告诉工程需要什么就行。

用处:当需要创建复杂对象时,不想把 new 散落到各处,想统一管理;创建对象的过程可能变化,但对外接口不变。

例子:简单工厂模式(一个工厂生产多种产品)

// 产品接口
interface Product {void show();
}// 具体产品A
class ProductA implements Product {public void show() {System.out.println("生产了产品A");}
}// 具体产品B
class ProductB implements Product {public void show() {System.out.println("生产了产品B");}
}// 工厂类
class SimpleFactory {public static Product createProduct(String type) {if ("A".equals(type)) {return new ProductA();} else if ("B".equals(type)) {return new ProductB();}throw new IllegalArgumentException("没有这个产品");}
}// 客户端
public class FactoryTest {public static void main(String[] args) {Product p1 = SimpleFactory.createProduct("A");p1.show();Product p2 = SimpleFactory.createProduct("B");p2.show();}
}

适配器模式(Adapter Pattern)

它把一个类的接口转换成客户希望的另一个接口,相当于“转接头”,使原本接口不兼容的两个类可以协同工作。

用处:老代码和新代码对不上;第三方库接口和自己接口对不上;不想改老代码,只想中间做个适配。

例子:手机充电头适配器

// 目标接口(客户期望的接口)
interface Target {void request();
}// 已有功能(不兼容的接口)
class Adaptee {public void specificRequest() {System.out.println("充电:220V 交流电");}
}// 适配器
class Adapter implements Target {private Adaptee adaptee;public Adapter(Adaptee adaptee) {this.adaptee = adaptee;}public void request() {System.out.println("使用适配器...");adaptee.specificRequest();}
}// 客户端
public class AdapterTest {public static void main(String[] args) {Adaptee adaptee = new Adaptee();Target target = new Adapter(adaptee);target.request();}
}

代理模式(Proxy Pattern)

它为其他对象提供一种访问控制,代理对象在目标对象之前起到中介作用,可以在前后做一些额外操作(权限控制、延迟加载、记录日志等)。

用处:需要对目标对象做控制(加权限、加缓存);不想或者不能修改目标对象代码;远程代理(RMI)、虚拟代理(延迟加载)、安全代理(权限控制)等场景。

例子:静态代理

// 接口
interface Service {void operation();
}// 真实对象
class RealService implements Service {public void operation() {System.out.println("执行真实操作...");}
}// 代理对象
class ProxyService implements Service {private RealService realService;public ProxyService(RealService realService) {this.realService = realService;}public void operation() {System.out.println("开始代理,做一些额外操作...");realService.operation();System.out.println("代理结束...");}
}// 客户端
public class ProxyTest {public static void main(String[] args) {RealService realService = new RealService();ProxyService proxy = new ProxyService(realService);proxy.operation();}
}

这些模式就是最适合Java 学生先掌握的核心四个,理解了这几个,剩下的其他设计模式学起来也是举一反三。

http://www.dtcms.com/a/604144.html

相关文章:

  • 厦门市保障性住房官网网站首页关键如何优化
  • 如何在卖家淘宝网站做产品链接广州建信网络有限公司
  • asp网站开发开题报告微信上怎么做网站
  • 卖酒网站排名个人社保缴费应交多少
  • 网站策划案模板公众号编辑器怎么使用
  • 西安网站seo厂家做网站分类链接
  • 网站标题栏怎么做1m带宽做网站速度怎么样
  • 重庆手机网站推广定做热点网站建设
  • 东莞网站建设网站建设淘宝客推广网站建设百度云
  • 莱州网站建设包年网站开发href使用本地链接
  • 吉林省示范校建设专题网站wordpress的排版
  • 基础网站怎么做推广普通话活动总结
  • 学校网站建设都是谁做的企业宣传片拍摄公司
  • 仙桃网站建设公交公司网站建设的意义
  • app开发必须要网站吗福千欣隆网站建设公司怎么样
  • 云和建设局网站品牌企业网站建设
  • 外贸型网站该如何推广汕头建设网站
  • 网站收录工具网站是什么字体
  • 网站建设服务费合同模板鞍山网上制作网站
  • 中铁广州建设有限公司网站餐饮会员管理系统
  • 网站怎么做来卖东西百度通用网址
  • WordPress搭建流媒体网站丽水网站开发公司
  • 徐州做网站谁家最专业wordpress 家装装修模板
  • 旅游网站域名应该如何设计中卫平面设计师招聘
  • 怎么用dw软件做网站东莞城市规划局
  • 长沙网站建设公司哪家专业2022最新通道地址1
  • 做网站在线支付系统多少钱?免费做mc皮肤网站
  • 天津seo网络手机网站如何优化
  • 深圳网站建设html5wordpress如何生成网站地图
  • 中国建行官方网站浙江住房和城乡建设厅网站首页