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

做网站需要规划哪些内容南宁网站seo大概多少钱

做网站需要规划哪些内容,南宁网站seo大概多少钱,网站设计制作新报价图片,个人主页图一、什么是设计模式简单点说,设计模式(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/537289.html

相关文章:

  • 第15天:网络基础与故障排除
  • confluence or 语雀 or sward,知识管理工具一文全方位对比
  • 易语言中函数参数“参考”的基本概念
  • 阿里巴巴国际站的前台网址是西安美食网页设计
  • 制作网站需要怎么做苏州注册公司流程和步骤
  • 云栖实录 | 驰骋在数据洪流上:Flink+Hologres驱动零跑科技实时计算的应用与实践
  • 基层建设是哪个网站的工作总结及工作计划
  • 网站开发学习网站ui设计怎么自学
  • 整站优化工具wordpress joonla安全
  • 在Linux下循环创建N个子进程的实现与解析
  • Spring AI Alibaba 基于JWT的鉴权登录系统实现详解
  • 软件测试(五)--自动化测试Selenium(一)
  • 网站项目开发网站菜单导航制作教程
  • 兰州最好的网站建设公司青岛网站优化排名
  • 某汽车公司4S店携手Acrel-5000建筑能耗管理系统,实现连锁门店能源精细化管理新突破
  • LeetCode 刷题【135. 分发糖果】
  • 专业做网站建设的网站内页产品 首页推荐
  • TCP 流通信中的 EOFException 与 JSON 半包问题解析
  • Garnet技术深度解析:微软研究院出品的高性能缓存存储引擎
  • 如何制作论坛网站网页制作软件是哪个
  • 《从点击到响应:HTTP 请求是如何传出去的》
  • 科技+文化:从“参观游览”到“沉浸共生”的文旅产业革命
  • 做条形图的网站河南郑州网站建设
  • 青少儿机器人技术学什么?
  • 基本魔法语言数组 (一) (C语言)
  • php源码网站修改保定建设厅网站
  • 网站建设访问对象网站开发毕设的需求分析
  • 【实战】自然语言处理--长文本分类(2)BERTSplitLSTM算法
  • Markdown模板20251027
  • Linux命令解释:cp -r --parents用法