设计模式
Zhou_run
一名默默无闻的码农
展开
-
JAVA设计模式 - 装饰者(Decorator)
装饰者(Decorator)从名字上看“装饰”,就是让被装饰者更加丰富,即为对象动态添加功能。Definition为对象动态的添加功能,使用装饰着模式生成子类的方法让功能的扩充现得更灵活。设计的初衷:回想一下在我们以前的学习中如何去拓展一个功能,答案是:继承。但是当需要扩展的子类很多的时候,继承就会变得十分复杂。Implementation同样用Iphone11和12来做例子。 购买Iphone12不会赠送充电器,然而以前都是会附带有充电器的,这时候厂商就有必要支持动态添加随机赠送配件(这是继承原创 2020-12-15 14:50:59 · 201 阅读 · 1 评论 -
JAVA设计模式 - 适配器(Adapter)
适配器(Adapter)我们学习一个模式,首先从名字理解。生活中常见的适配器就是电源适配器。作用是将电压,电流转换成电器需要的电压电流。我们只需要记住一句话,适配器就是把类接口转换成另一个用户需要的接口(转换接口)。在iphone11,iphone12拥有不同的通信技术。现在想让11调用5G信号接口,就给它加上一个适配器。public interface Iphone12 { void communicateBy5G();}public interface Iphone11 {原创 2020-12-14 21:17:37 · 172 阅读 · 0 评论 -
JAVA设计模式 - 抽象工厂(Abstract Factory)
抽象工厂(Abstract Factory)前面我们说了工厂模式,抽象工厂相较于工厂模式,突出了“家族”的概念。在针对每个产品族都提供一个接口,可以创建一个产品族里的多个对象。我又举个栗子,假设随着手机市场的逐步壮大,苹果的客户有部分流向华为,小米等品牌。为了留住客户,高层决定以后售出的每台手机都送对应型号的手机透明壳。这里苹果13和13的透明手机壳就是一个对象家族,他们之间是配套的。这时候,工厂模式就派不上用场了,毕竟只能创建一个对象。一个对象家族对应一个工厂(这个工厂可以创建多个对象,例如iph原创 2020-12-04 17:04:39 · 102 阅读 · 0 评论 -
JAVA设计模式 - 工厂方法(Factory Method)
工厂方法(Factory Method)和简单工厂方模式的不同之处在于,工厂方法把工厂类也抽象出来一个接口(抽象类),每一种产品都有自己对应的工厂类。前面就说到了简单工厂模式,现在设想一下,如果我们新出一款产品iphone13,需要怎么改动代码。1)首先我们要创建一个新的手机产品类Iphone13实现Apple接口2)在工厂类修改代码,加上新手机的逻辑代码。我在这里举得代码是十分简单的,但在实际项目是十分复杂(层次深)的结构。所以在工厂类修改代码会很冗杂。这时候工厂模式来了!它来了!把工厂类定义原创 2020-12-04 17:02:01 · 91 阅读 · 0 评论 -
JAVA设计模式 - 简单工厂(Simple Factory)
简单工厂(Simple Factory)在创建一个对象时不向客户暴露内部细节,并提供一个创建对象的通用接口。1)我举个栗子,没有工厂的时候,我们想要一个苹果手机,我们需要自己new创建一个出来。(这时候我们想创建一个手机需要很多零件(参数),每当我们想要一个手机就要准备很多零件来创造一个手机,这就很麻烦了,那么有没有可以我想要手机就能拿到,不管它需要什么零件,这就是为什么工厂类的由来)2)现在有了工厂模式,想要手机直接到工厂取就好了。(零件的思想我没有在案例中体现出来)/** * 苹果系列原创 2020-12-04 16:59:22 · 139 阅读 · 0 评论 -
JAVA设计模式 - 单例模式(Singleton)
单例(Singleton)我一直觉得学习死记硬背是没什么用的,下面让我们用理所当然的视角来学习设计模式之一—单例模式。所谓单例模式,如其名,全局只能有一个实例。我们都知道,平时创建实例都是通过构造函数new出来,因此我们想要保证单例就必须把构造函数私有,变量私有且静态(防止被修改和通过.访问)。Ⅰ 懒汉式-线程不安全以下实现中,私有静态变量 uniqueInstance在类加载的时候不会 被实例化,这样做的好处是,如果没有用到该类,那么就不会实例化 uniqueInstance,从而节约资源。(这就转载 2020-12-03 16:09:59 · 119 阅读 · 0 评论