![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
23个设计模式(学习笔记)
冬夏莫凉丶
这个作者很懒,什么都没留下…
展开
-
Java-23个设计模式 Builder 建造者模式
Builder 在软件系统中,有时候面临着 " 一个复杂对象 " 的创建工作,通常由各个部分的子对象由一定算法构成。各个部分剧烈变化,而将他们组合的算法却相对稳定。 ① 创建手机的父类和子类(Huawei和Apple) /** * 将对象的表示和构建相分离,时同样的构建过程有不同的表示 * Mobile是对象的表示 * Director是同样的构建过程 */ public a...原创 2019-03-24 22:01:08 · 82 阅读 · 0 评论 -
Java-23个设计模式 Abstract Factory 抽象工厂模式
Abstract Factory 一系列相互依赖的对象的创建工作 (提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类) ① 创建抽象工厂SoftWareFactory(生成一个软件,iOS平台或者Android平台) /** * 软件工程基类 * 一个软件在多个平台的应用iOS和Android */ public abstract class SoftWar...原创 2019-03-24 15:11:30 · 79 阅读 · 0 评论 -
Java-23个设计模式 Factory Method 工厂模式
Factory Method 延迟类的实例化(支持变化,延迟到子类),解耦(new 后面的具体类) ① 创建基类,定义工厂方法所创建的对象的接口(这里生产电脑系统Linux和Computer) /** * 工厂基类 */ public abstract class SystemProductFactory { // 工厂方法 abstract ComputerSyste...原创 2019-03-24 01:12:45 · 84 阅读 · 0 评论 -
Java-23个设计模式 Bridge桥接模式
Bridge 将抽象部分(业务功能)与它的实现部分分离(平台分离),使它们可以独立地变化。 ① 创建软件与平台的接口SoftWareImpl(其实现类(iOS或者Android)会实现与软件连接的接口) /** * 软件与平台的接口 */ public interface SoftWareImpl { // 连接接口 public void connect(); ...原创 2019-03-23 23:06:43 · 81 阅读 · 0 评论 -
Java-23个设计模式 Decorator装饰者模式
Decorator: 动态(组合)地给一个对象添加一些额外的职责,就增加功能来说,Decorator模式相比生成子类更为灵活(继承) ① 创建Component组件(Human) /** * 抽象类,人类 */ public abstract class Human { // 跑 abstract void run(); } ② 创建具体对象Con...原创 2019-03-23 18:12:10 · 106 阅读 · 0 评论 -
Java-23个设计模式 Strategy
Strategy 定义一系列算法,一个个封装起来并且使他们可相互替换(变化),使算法可独立于使用它的客户(稳定)而变化。 ① 创建(所有算法公共)接口 public interface MathStrategy { // 计算抽象方法 public int calculate(int a,int b); } ② 创建接口实现类,加减(以后可能需要乘除) public...原创 2019-03-22 22:13:16 · 71 阅读 · 0 评论 -
Java-23个设计模式 Template Method
Template Method ① 模板方法:在抽象类中定义一个稳定的算法骨架(如一个方法中有固定业务逻辑) public abstract class AbstractTemplate { // 稳定的骨架 public void getChampion(){ // 固定逻辑 dohookMethod(); System.o...原创 2019-03-22 20:34:58 · 90 阅读 · 0 评论 -
Java-23个设计模式 Proxy 代理模式
Proxy 在面向对象系统中,有些对象由于某种原因(如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问[分布式访问对象,安全访问]等),直接访问会给使用者、或者系统结构带来很多麻烦 ① 创建接口 public interface Subject { void run(); } ② 创建具体实现类 /** * 实现Subject接口的实体类 */ pu...原创 2019-03-25 17:13:01 · 86 阅读 · 0 评论 -
Java-23个设计模式 Facade 外观模式
Facade 在组件构建过程中,某些接口之间直接的依赖常常会带来很多问题、甚至根本无法实现。采用添加一层(间接)(稳定)的接口,来隔离本来互相紧密关联的接口 ① 设计种类繁多,这里主要体现的是一种设计原则和思想的表达 ② Facade部分是稳定的部分,返回数据对象的更改 优点: 从客户程序的角度来看,Facade模式简化了整个组件系统接口,对组件内部和外部客户程序...原创 2019-03-25 15:10:22 · 132 阅读 · 0 评论 -
Java-23个设计模式 Flyweight 享元模式
Flyweight 主要解决面向对象的代价问题,一般不触及面向对象的抽象性问题。Flyweight采用对象共享的做法来降低系统中对象的个数,从而降低细粒度对象给系统带来的内存压力。 如本例中:用户通过不同品牌的手机发送短信,要求每个品牌只创建一次,当下次有人还要用创建过的对象发信息时,从对象池中拿。 ① 创建一个发信息的接口(可供手机实现) /** * 发送消息的接口 */ pub...原创 2019-03-25 14:26:25 · 125 阅读 · 0 评论 -
Java-23个设计模式 Singleton 单例模式
Singleton 分为懒汉式和饿汉式和登记式,适用于一个类只有一个实例的情况(保证一个类仅有一个实例,并提供一个该实例的全局访问点) 懒汉式:在第一次调用方法的时候会做一个判断,如果实例不存在,则创建一个,如果实例存在,则直接返回。延迟加载,比如配 配置文件,被用到的时候才会加载 饿汉式:一开始就加载了 ① 懒汉模式 /** * * 懒汉模式:第一次被引用时候才被初始化 *...原创 2019-03-24 23:29:57 · 93 阅读 · 0 评论 -
Java-23个设计模式 Prototype 原型模式
Prototype 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 ① 从工厂模式中的例子过来,将工厂基类创建对象的抽象类移到系统抽象类,用Java克隆代替 /** * 抽象类 */ public abstract class ComputerSystem implements Cloneable { abstract void run(); pu...原创 2019-03-24 16:40:10 · 69 阅读 · 0 评论