设计模式
设计模式学习
Kaiz‘s Blog
这个作者很懒,什么都没留下…
展开
-
设计模式_合集
1 概述软件工程中,**设计模式(design pattern)**是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。这个术语是由埃里希·伽玛(Erich Gamma)等人在 1990 年代从建筑设计领域引入到计算机科学的。模式不是代码,而是众多软件开发人员经过长时间的试验总结出来的最佳实践。编写软件过程中,程序员面临着来自耦合性、内聚性、灵活性等多方面的挑战,设计模式是为了让程序(软件),具有更好的——代码重用性 (即:相同功能的代码,不用多次编写)可读性 (即:编程规范性,原创 2020-12-09 21:04:04 · 180 阅读 · 0 评论 -
桥接模式
前言:在现实生活中,某些类具有两个或多个维度的变化,如图形既可按形状分,又可按颜色分。如果为每一种形状都提供一套各种颜色的版本,m 种形状和 n 种颜色的图形就有 m×n 种,不但对应的子类很多,而且扩展困难。如果用桥接模式就能很好地解决这些问题。定义桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。结构桥接(Bridge)模式包含以下主要角色。.转载 2020-12-09 16:59:09 · 120 阅读 · 0 评论 -
适配器模式
前言:在现实生活中,经常出现两个对象因接口不兼容而不能在一起工作的实例,这时需要第三者进行适配。例如,用直流电的笔记本电脑接交流电源时需要一个电源适配器,用计算机访问照相机的 SD 内存卡时需要一个读卡器等。在软件系统中,需要开发的具有某种业务功能的组件在现有的组件库中已经存在,但它们与当前系统的接口规范不兼容,如果重新开发这些组件成本又很高,这时使用适配器模式能很好地解决这些问题。定义适配器模式(Adapter Pattern) 又叫包装器(Wrapper),它将一个类的接口转换成客户希望的另外.原创 2020-12-09 15:12:31 · 238 阅读 · 0 评论 -
原型模式
前言:在有些系统中,存在大量相同或相似对象的创建问题,如果用传统的构造函数来创建对象,会比较复杂且耗时耗资源,用原型模式生成对象就很高效,就像孙悟空拔下猴毛轻轻一吹就变出很多孙悟空一样简单。定义原型模式(Prototype Pattern) 是一种创建型设计模式,它指的是:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。直白地讲,使用原型实例指定要创建对象的类型,通过拷贝这个原型来创建新对象。原型模式的拷贝分为浅拷贝和深拷贝。浅拷贝(Shallow Cop.原创 2020-12-08 22:24:10 · 129 阅读 · 0 评论 -
建造者模式
前言:无论是在现实世界中还是在软件系统中,都存在一些复杂的对象,它们拥有多个组成部分。如汽车,它包括车轮、方向盘、发送机等各种部件;又比如就计算机,由CPU、主板、内存、硬盘、显卡、机箱、显示器、键盘、鼠标等部件组装而成。而对于大多数用户而言,无须知道这些部件的装配细节,也几乎不会使用单独某个部件,而是使用一辆完整的汽车,使用一台完整的计算机。建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的对象。用户只需要指定复杂对象的类型就可以得到该对象,而无须知道其内部的具体构造细节。部件的组合过程往往.原创 2020-12-08 21:27:57 · 147 阅读 · 0 评论 -
工厂模式之简单工厂、工厂方法与抽象工厂
1 简单工厂(Simple Factory)1.1 问题引出假如有一个披萨店,Pizza的种类有很多,如CheesePizza、VeggiePizza、PepperPizza等。披萨店根据收到的订单制作Pizza,披萨的制作流程有材料的准备材料、烤、切、包装几步。如何设计Pizza的订购呢?按照一般的设计思路:那么当用户订购时: Pizza OrderPizza(String orderType) { Pizza pizza; if (orderType.e原创 2020-12-08 11:21:41 · 7157 阅读 · 1 评论 -
单例模式(Singleton Pattern)
文章目录定义结构实现Ⅰ饿汉式-静态常量Ⅱ 饿汉式-静态代码块Ⅲ 懒汉式-线程不安全Ⅳ 懒汉式-线程安全Ⅴ 懒汉式-线程安全-双重校验锁Ⅵ 静态内部类VII 枚举JDK总结参考在我们的系统中,有一些对象其实我们只需要一个,比如说:线程池、缓存、对话框、注册表、日志对象、充当打印机、显卡等设备驱动程序的对象。事实上,这一类对象只能有一个实例,如果制造出多个实例就可能会导致一些问题的产生,比如:程序的行为异常、资源使用过量、或者不一致性的结果。如何保证一个类只有一个实例并且这个实例易于被访问呢?定义一个全局变原创 2020-12-05 03:10:59 · 896 阅读 · 1 评论