设计模式
zc搬码工
抬头不是自负,而是仰望星空;低头不是自卑,而是脚踏实地。
展开
-
快速上手设计模式4 - 原型模式
概念:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 关键词:拷贝。获取对象不是通过new(类实例化)的方式,而是通过clone(拷贝)的方式 最主要的优点:对象创建速度快,显著提升性能。 适用场景:直接创建对象需要花费大量的资源,同时该对象需要大量重复的创建。 例子:10000人的公司需要统一使用办公电脑,硬件环境每个人都一样,软件环境则根据每个人的需要自行安装。假设每...原创 2018-06-11 16:24:35 · 177 阅读 · 0 评论 -
快速上手设计模式11 - 享元模式
享元模式概念:使用共享对象进而有效地支持大量的细粒度的对象 首先理解两个概念:内部状态、外部状态 内部状态:在享元对象内部不随外界环境改变而改变的共享部分。 外部状态:随着环境的改变而改变,不能够共享的状态就是外部状态。 都不懂,很简单:现在有一个画图软件,能画出各种颜色的圆形。我们就可以把圆形作为享元对象,颜色就作为内部状态是可以共享的。 首先创建享元类,圆形 public cla...原创 2018-07-05 15:49:58 · 201 阅读 · 0 评论 -
快速上手设计模式10 - 外观模式
外观模式概念:隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口 很好理解的例子:电脑买好了,只需要按“开机”键就开机了,但对系统来讲开机过程其实挺复杂的,这个开机键就是外观模式的接口,而系统内部的复杂操作不需要外界知道。 开机过程需要启动主板、CPU、内存 /** 主板类 */ public class Mainboard { public void startMain...原创 2018-07-05 11:07:41 · 154 阅读 · 0 评论 -
快速上手设计模式9 - 组合模式
组合模式概念:将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 例子:网页通常有导航菜单,菜单分为一级菜单、二级菜单、三级菜单甚至更多,此时就适合用组合模式,表示菜单的树形结构。 创建菜单类,同时提供引用自身对象的list public class Menu { /* 菜单等级 */ String level; /* ...原创 2018-07-04 13:49:23 · 165 阅读 · 0 评论 -
快速上手设计模式8 - 装饰模式
装饰模式概念:以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。 例子:还是以打官司为例子,不管过程和结果怎么样,我只是签字而已,可是对外我不能跟人说我只是签个字就赢了这个官司,此时我就需要把这全部的事迹请包装公司包装一下,然后由包装公司帮我对外说我是怎么怎么做才赢下的官司。 还是先创建接口 public interface Sourceable { /* 打官司 */ ...原创 2018-06-15 18:12:30 · 168 阅读 · 0 评论 -
快速上手设计模式7 - 代理模式
代理模式概念:给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。 简单的例子:我请代理律师帮忙打官司,他知道法律相关的东西,而我不了解法律,我只知道签字,如果叫我去打官司我肯定打不赢,所以我叫代理律师代替我去打官司。 创建接口 public interface Sourceable { /* 打官司 */ public void lawsuit(); } 接口实...原创 2018-06-15 11:21:17 · 217 阅读 · 0 评论 -
快速上手设计模式6 - 桥接模式
桥接模式概念:把抽象化与实现化解耦,使得二者可以独立变化。 不懂,举例:每个公司都有电话转接器,每当客户打电话到总台,然后输入对应的分机号,就可以转接到对应工号的电话上了。这里的电话转接器就作为一个桥,起了桥接的作用,这就是桥接模式。 首先创建电话接口,声明接电话方法 public interface Phone { void sayHello(); } 然后至少创建两个实现类 ...原创 2018-06-12 17:36:44 · 180 阅读 · 0 评论 -
快速上手设计模式3 - 建造者模式
建造者模式概念:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。不懂?换个解释: 想玩吃鸡,需要一个性能好一点的电脑主机,可是电脑主机有CPU、主板、内存等配件,如果每个配件都单独购买,就要考虑CPU与主板之间有匹配问题,主板与内存条之间也有匹配问题,作为小白的我不知道怎么办。所以商家直接给出了几个主机套装方案,我只需要选择一个套装方案,付钱,然后等装机师傅组装好就能...原创 2018-06-05 16:57:51 · 200 阅读 · 0 评论 -
快速上手设计模式5 - 适配器模式
前面四篇博客已经把五种创建型的设计模式已经整理完,工厂方法模式和抽象工厂模式在我看来其实属于同一类型,详见快速上手设计模式2 - 工厂方法模式与抽象工厂模式 现在开始整理结构型的设计模式。 适配器模式概念:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 例子:我新买的充电器只能充安卓手机的电,但是我朋友的苹果手机也想充电,如果有一...原创 2018-06-12 15:44:56 · 216 阅读 · 0 评论 -
快速上手设计模式1 - 单例模式
很久没有写博客了,最近抽时间来温习一下设计模式,首先整理一下最简单最基础的单例模式,它属于创建型的设计模式。废话不多说,直接上干货。 概念:保证一个类只存在一个实例,并将这个实例供整个系统访问。 常见的单例模式有五种:饿汉式、懒汉式、双重检查锁、静态内部类、枚举类型 饿汉式:这个对象很饿、很急,程序加载就创建实例。关键词:static public static class Singlet...原创 2018-06-01 15:11:13 · 292 阅读 · 0 评论 -
快速上手设计模式2 - 工厂方法模式与抽象工厂模式
工厂方法模式和抽象工厂模式是两个不同的设计模式,但个人认为两种模式放到一起会更容易理解他们。 工厂方法模式的概念:定义一个用于创建对象的接口,让子类决定实例化哪一个类,不懂?接着往下看。 常见的工厂方法模式有几种:简单工厂、多方法工厂,工厂方法 举例:通过工厂方法模式创建并获取一个因特尔CPU对象,假设这个CPU对象的创建过程很复杂。 简单(静态)工厂:工厂静态声明了各个产品的创建接口和参...原创 2018-06-05 11:48:00 · 235 阅读 · 0 评论 -
快速上手设计模式12 - 责任链模式
终于把项目昨晚了,抽时间开始整理行为型的设计模式,责任链模式; 责任链模式概述:责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。 不是很理解,举个简单的例子:我要请...原创 2018-12-18 11:19:58 · 137 阅读 · 0 评论