首页 / 分类 / 设计模式
CATEGORY

设计模式

共 21 篇已发布文章

{ }}设计模式

想要写出跟知名开源库一样的代码,首先你需要知道这些

在工作初期,我们可能会有这样的感觉,自己的代码接口设计混乱、代码耦合较为严重、一个类的代码过多等,当自己回过头再看这些代码时可能都会感慨怎么写成那样。再看那些知名的开源库,他们大多有着整齐的代码、清晰简单的接口、职责单一的类,这个时候我们通常会捶胸顿足而感叹:什么时候老夫能写出这样的代码!其实在做开发这些年中,我渐渐的感觉到,其实国内一些初、中级工程师写的东西不规范或者说不够清晰的原因是缺乏一些指

设计模式2020.10.105217 阅读
{ }}设计模式

设计模式之策略模式

需求:1:模拟鸭子项目从项目"模拟鸭子游戏"开始。鸭子都会叫、会游泳。有的鸭子是红头的、有的鸭子是绿头的。分析:从OO(Object Oriented,面向对象)的角度设计这个项目。鸭子的父类:抽象的 1.都会gaga叫 2.抽象的外形(如:红头鸭、绿头鸭等) &nb

设计模式2020.04.042811 阅读
{ }}设计模式

设计模式系列教程之单例模式-原理介绍

设计模式系列教程之单例模式-原理介绍一:单例模式(Singleton)学习步骤经典的单例模式原理:本文出处:凯哥Java(wx:kaigejava)先来看看单例模式的介绍:其重点就是,使类对象成为系统中唯一的一个实例。怎么理解这句话呢?我们从数学与逻辑学中来理解:singleton的定义是“有且仅有一个”的意思。我们来看看单例在哪些地方会被使用到,来理解单例模式的意义:比如我们系统中使用到的线程池

设计模式2020.04.042778 阅读
{ }}设计模式

单例模式只有饿汉式和懒汉式吗?这几种单例模式你见过吗

设计模式之单例模式-单例模式的几种实现方式及小案例单例模式有几种?饿汉式、懒汉式。这两种是最常见的。还有几种是对其扩展的。具体如下:我们可以从上图看到,共有六种方式。其中在懒汉式基础上扩展的有两种。即:加锁的懒汉式及双重判断加锁的懒汉式还有一种是使用内部类实现的。即:内部静态类的最后一种是比较少见的。使用枚举的。我们来看看每种方式代码都怎么写。懒汉式:我们来看看懒汉式优缺点:饿汉式:饿汉式的优缺点

设计模式2020.04.042878 阅读
{ }}设计模式

观察者模式上篇

观察者模式上篇观察者模式原理:大家好,欢迎来到污污弹公司,最近啊,污污弹接到气象站的外包项目。功能比较简单:要对外提供天气接口(温度、气压、湿度)需要实时通知第三方;还需要实时在市中心公告栏上发布天气情况。司小司接到任务开始动手干了。根据Java面向对象特性分析后得到如下信息:天气对象:WeatherData公告板对象:CurrentConditions天气更新时候,调用天气对象的dataChan

设计模式2020.04.042655 阅读
{ }}设计模式

设计模式之观察者模式-Java内置观察者及总结

观察者下篇在上一篇文章中,我们通过污污弹公司司小司做气象站项目学习了观察者模式怎么使用。在本篇中,我们对观察者模式进行总结及关键点,还有一个就是Java中内置的观察者模式。本文出处:凯哥Java(kaigejava)一:Java内置的观察者我们将使用Java内置的观察者将气象站项目重新写一次。内置观察者的区别:Subject对象:1:subject名称变了,变成了Observable了;功能不变,

设计模式2020.04.042520 阅读
{ }}设计模式

设计模式之工厂模式一简单工厂模式

设计模式之工厂模式一简单工厂模式工厂模式由来:在我们创建对象的时候使用,使用new操作的。如果多个对象创建都使用new会。所以工厂模式就是用来代理new操作的一种模式。根据工厂模式由来,我们可以看出工厂模式属于创建型模式。提供一种创建对象的最佳方式。来源:凯哥Java(kaigejava)工厂模式主要的分类:简单工厂模式、工厂方法模式、抽象工厂模式简单工厂模式:简单工厂模式不属于23中设计模式。又

设计模式2020.04.042474 阅读
{ }}设计模式

设计模式之工厂模式-工厂方法模式

设计模式之工厂模式-工厂方法模式大家好,欢迎来到污污弹公司,今天司小司又接到了一个新活-披萨项目。来源:凯哥Java(kaigejava)需求:披萨项目:要方便披萨品种的扩展、要便于维护、要能运行时候方便扩展来看看披萨族设计:司小司经过分析得到:披萨都需要烘焙(bake)、切割(cut)、包装(box)还有就是披萨原材料准备(prepare)。其中变化的就是prepare准备的原材料。不同披萨的原

设计模式2020.04.042664 阅读
{ }}设计模式

设计模式之工厂模式-抽象工厂模式

设计模式之工厂模式-抽象工厂模式抽象工厂模式:定义了一个接口用于创建相关或有依赖关系的对象簇,而无需明确指定具体类。我们来看看使用抽象工厂模式来实现的披萨项目。来源:凯哥Java(kaigejava)先来看看项目结构:说明:1:工厂接口2:两个实现类3:订单对象4:测试类。看看具体代码:IFactoryInterface:BeiJinFatory:FactoryOrderPizza测试类:三种工厂

设计模式2020.04.042620 阅读
{ }}设计模式

设计模式之命令模式-使用命令模式实现遥控器及总结

设计模式之命令模式-使用命令模式实现遥控器及总结先来看看项目结构:说明:1:命令接口对象2:电灯打开或关闭命令3:音响打开或关闭命令4:音响音量增加或减少命令来源:凯哥Java(kaigejava)电灯开或关代码:/***Createdbykaigejavaon2019/8/30.*关灯的命令对象*/publicclass LightOffCommand implements&

设计模式2020.04.042883 阅读
{ }}设计模式

设计模式之命令模式-引导篇及原理

设计模式之命令模式-引导篇及原理引导司小司又接到了新项目:家电自动化遥控器API项目。项目背景:随着物联网的流行以及智能化家具普及。一个遥控器可以管控家里所有设备(家电等)也很正常了。如上图:假设空心的是关,实心的是开。需求:1:给出各个家电(电灯、电视、音响等)的API,需要在这个遥控器接口中,对接这些API来实现对不同家电的控制。2:要求自动化遥控器要扩展性好、维护性好。第一版设计:面向对象的

设计模式2020.04.044704 阅读
{ }}设计模式

设计模式之外观模式-引导篇及原理

外观模式-引导篇及原理来看看司小司的新项目-家庭影院控制接口项目家庭影院设备:DVD播放器、投影仪、自动屏幕、环绕立体声、爆米花机等等。对于的类对象:DVDPlayer、Projector、Stereo、Popcorn、Screen、TheaterLightsetc...类图如下:来源:凯哥Java(kaigejava)我们知道,这些设备需要遥控器,同时这些设备都对外提供了接口。如果一个设备一个遥

设计模式2020.04.044754 阅读
{ }}设计模式

设计模式之外观模式-总结

设计模式之外观模式-总结在上一篇中,我们模拟家庭影院项目实现了外观模式讲解。本篇我们对外观模式进行总结。来源:凯哥Java(kaigejava).本文由凯哥《23设计模》系列中的一篇。凯哥突然感觉,使用家庭影院这个例子不恰当。换个通俗易懂的。去银行存取钱。这个案例大家都遇到过吧。我们去银行后,每个窗口都有个漂亮的小姐姐为各位服务。在我们存取钱的过程中,只需要和窗口小姐姐沟通就可以了。我们把身份证给

设计模式2020.04.044812 阅读
{ }}设计模式

设计模式之模板模式引导篇

在讲模板模式原理前,我们按照惯例,先来个生活中例子。茶馆需要开发一个自动的泡咖啡和泡茶的程序。来源:凯哥Java(kaigejava)我们先来看看泡咖啡和泡茶的步骤:我们根据上图写代码实现:泡咖啡类,如下图:泡茶类如下图:测试类:运行结果:很简单。也很容易写出来。写出来很清楚。从上图中,可以发现,两个流程几乎是一样的套路(步骤)。其中,不变的部分:水烧开、倒入杯子、送给客人。这三步是不变的。变化的

设计模式2020.04.044774 阅读
{ }}设计模式

设计模式之模板模式总结篇

模板模式总结篇在上一篇《设计模式之模板模式引导篇》中,我们使用了泡咖啡和泡茶的日常小场景讲解了模板模式的原理。本篇,我们就结合这个小案例,来对模板模式进行总结。本文出自《凯哥学设计模式》系列教程,凯哥Java(kaigejava)出品。一:模板模式定义(或内容)在上一篇中,我们知道泡茶和泡咖啡都需要五个步骤。这五个步骤,其实就是算法骨架。在具体是泡咖啡还是泡茶,是加牛奶还是加柠檬的时候,把这两个具

设计模式2020.04.044793 阅读
{ }}设计模式

设计模式之迭代器模式 引导篇

迭代器模式-引导篇这两天,比较火的并购新闻就是,网易考拉被阿里以20亿美元收购。从此网易考拉不再姓“网”而姓“阿”了。并购后的网易考拉和阿里的电商系统进行对接。那么问题来了:在阿里有个早餐店的菜单(CakeHouseMenu)使用的事ArrayList来存放菜单的,考拉有个午餐店的菜单(DinerMenu)使用的是数组结构存放的。现在考拉和阿里合并了,两个点的菜单也要合并。我们先来看看第一版设计:

设计模式2020.04.044680 阅读
{ }}设计模式

组合模式就是几个模式组合一起吗?来看看组合模式原理

组合模式引导篇及组合模式原理在上一个《迭代器模式》中,我们讲到了阿里收购网易考拉后,店铺合并的问题使用到了迭代器模式。现在又有了新需求。我们先来看看新需求:先说明:组合模式并非是把之前学过的设计模式组合在一起的一种模式哈。别理解错了。来源:凯哥Java(kaigejava)在原有菜单的基础上,新增餐后甜点功能,如在中餐厅(DinerMenu)中添加餐后甜点。我们先来回顾下上一个模式下的类图,如下图

设计模式2020.04.044534 阅读
{ }}设计模式

状态模式引导篇及原理

状态模式引导篇及原理讲解状态模式原理之前,我们先来模拟一个项目,然后对项目进行需求升级,发现之前设计不符合新需求了,从而来引导出状态模式原理。模拟项目:一个糖果机(或者售票机)。智能糖果机,使用Java软件来控制糖果机.本文出处凯哥Java(kaigejava)讲《23种设计模》系列教程种的《状态模式引导篇及原理》需求分析:我们来简化糖果机出糖果的过程:开机-->待机状态-->投入硬币

设计模式2020.04.044974 阅读
{ }}设计模式

设计模式之状态模式总结篇

状态模式总结篇状态模式总结篇,我们将从以下几个方面对状态模式进行总结。状态模式出现的意图是什么?通过对象内部状态发生改变进而来改变对象的行为,对象看起来好像是被修改了一样。如,没有糖果的时候(是一个状态),糖果机就不能运行了,有糖果之后(另一个状态),投币就可以出糖果了。本文出处凯哥Java(kaigejava)讲《23种设计模》系列教程种的《状态模式总结篇》凯哥公众号:凯哥Java凯哥个人博客:

设计模式2020.04.045002 阅读
{ }}设计模式

设计模式之策略模式总结

策略模式:分别封装行为接口,实现算法族,超类(父类)里放行为接口对象,在子类里具体设定行为对象。原则就是:    分离变化部分,封装接口,基于接口编程各种功能。    此模式让行为算法的变化独立于算法的使用者。策略模式总结:1:策略模式三要素:A:接口类。策略接口或是策略抽象类。B:实现策略接口的具体策略类C:cont

设计模式2019.08.102650 阅读