#新设计

《设计模式之禅》之备忘录模式

备忘录模式提供了一种弥补真实世界缺陷的方法,让”后悔药”在程序的世界中真实可行,其定义如下:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。通用类(三个角色)Originator发起人角色记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创...

设计电商平台优惠券系统

阅读本文大概需要4.2分钟。引言每次过节的时候,各大电商的优惠券已经成为了绝对的关键词,最近一直在做优惠券需求,从最初的一无所知到现在建立初步的优惠券框架结构,一路也是磕磕碰碰。今天就把这段时间的输入总结一下然后输出。系统概览 优惠券的投放方式有多种,本文采用的是活动页送券这种形式。一、创建优惠券优惠券是一套...

《架构整洁之道》之设计原则

通常来说,要想构建一个好的软件系统,应该从写整洁的代码开始做起。毕竟,如果建筑所使用的砖头质量不佳,那么架构所能起到的作用也会很有限。反之亦然,如果建筑的架构设计不佳,那么其所用的砖头质量再好也没有用。这就是SOLID设计原则所要解决的问题。SOLID原则的主要作用就是告诉我们如何将数据和函数组织成为类,以及如何将这些...
代码星球 ·2020-12-27

《架构整洁之道》之设计与架构究竟是什么

二者没有任何区别。“架构”这个词往往使用于”高层级”的讨论中。这类讨论一般都把”底层”的实现细节排除在外。而”设计”一词,往往用来指代具体的系统底层组织结构和实现的细节。但是,从一个真正的系统架构师的日常工作来看,这样的区分是根本不成立的。举个例子说明:以给我设计新房子的建筑设计师要做的事情为例。新房子当然是存在着既定...

角色权限数据库设计

 基于角色架构设计:MySQL中表创建语句:/*角色表*/CREATETABLEIFNOTEXISTS`role`(`id`INTNOTNULLAUTO_INCREMENTPRIMARYKEY,`name`VARCHAR(150),`mark`VARCHAR(150),`type`VARCHAR(150),`...

设计模式总结篇系列:命令模式(Command)

在程序设计中,经常会遇到一个对象需要调用另外一个对象的某个方法以达到某种目的,在此场景中,存在两个角色:请求发出者和请求接收者。发出者发出请求,接收者接收请求并进行相应处理。有时候,当需要对请求发出者和接收者进行解耦,即发出者中不能含有接收者的引用,如请求需要进行排队操作,或可能需要对请求进行取消操作等,在此类场景中,...

设计模式总结篇系列:观察者模式(Observer)

观察者模式中通常有两个基本的概念主题:观察者和被观察者。当被观察者状态发生改变时,需要通知相应的观察者,当然,每个被观察者所对应的观察者可能不知一个,他们之间是1:n的关系。用专业一点的术语对观察者模式的描述为:当一个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化。观察者模式的一般实现方式如下:1.定义观察...

设计模式总结篇系列:模板方法模式(Template Method)

模板方法模式需要开发抽象类和具体子类之间的协作。抽象类负责给出一个算法的轮廓和骨架,子类则负责给出这个算法的各个逻辑步骤。代表这些具体逻辑步骤的方法称做基本方法(primitivemethod);而将这些基本方法汇总起来的方法叫做模板方法(templatemethod)。子类重写抽象类中的抽象方法,通过调用抽象类中的模...

设计模式总结篇系列:策略模式(Strategy)

前面的博文中分别介绍了Java设计模式中的创建型模式和结构型模式。从本文开始,将分别介绍设计模式中的第三大类,行为型模式。首先我们了解下分为此三大类的依据。创建型模式:主要侧重于对象的创建过程;结构型模式:主要侧重于处理类或对象的组合;行为型模式:主要侧重于类或对象之间的交互以及职责分配。首先了解下策略模式的概念:定义...

设计模式总结篇系列:享元模式(Flyweight)

我们都知道,Java中的String类具有如下特性:String是一个不可变类,当直通过用字符串方式使用String对象时,Jvm实际上在内存中只存有一份,且存在字符串常量池中。当对字符串直接进行修改时(如直接联接另一个字符串常量),Jvm会首先去字符串常量池中查找是否已经存在此字符串,不存在则创建一份放在池中,存在则...

设计模式总结篇系列:组合模式(Composite)

在探讨Java组合模式之前,先要明白几个概念的区别:继承、组合和聚合。继承是is-a的关系。组合和聚合有点像,有些书上没有作区分,都称之为has-a,有些书上对其进行了较为严格区分,组合是contains-a关系,聚合是has-a关系。组合方式中被组合的对象生命周期不能超过整体,一般写代码时是直接在整体类的构造方法中创...

设计模式总结篇系列:桥接模式(Bridge)

在实际类设计过程中,有时会遇到此类情况:由于实际的需要,某个类具有两个或两个以上的维度变化,如果利用继承将每种可能的变化情况都定义成一个类,一是会导致类膨胀的问题,二是以后不太好维护和并且违背类的设计原则。那么面对这种情况,类改如何设计呢?这就是本文所要讲到的桥接模式。简单的讲,桥接模式是指:将抽象和行为划分开来,从而...

设计模式总结篇系列:外观模式(Facade)

张三自从毕业后开始做软件开发,做着做着发现不爽了,钱赚不了太多,头发也白了。于是拿着一点小资本,想着做点小生意。瞅着眼前的餐饮行业还不错,于是打算开一家餐馆。开参观可不是一件容易的事,仅仅行政类的审批流程就不少。至少包括办理卫生许可证,办理税务登记,办理工商登记等。我们先来看一下行政审批接口:1interfaceExe...

设计模式总结篇系列:代理模式(Proxy)

时代在发展,我们发现,现在不少明星都开始进行微访谈之类的,有越来越多的参与捐赠等。新的一天开始了,首先看下新的一天的日程安排:1interfaceSchedule{23publicvoidweiTalk();45publicvoiddonation();67}Schedule接口定义了今天的形成安排,主要包括微访谈和捐...

设计模式总结篇系列:装饰器模式(Decorator)

在面向对象设计过程中,经常会遇到需要对现有的类的功能进行扩展,通常我们可以采用继承的方式。例如老罗最近在做手机,一开始需要定义手机所应具有的功能:1interfacePhone{23publicvoidtel();45publicvoidsms();67}在此,为简单起见,只是定义了接打电话和收发短信功能。然后,老罗开...
首页上一页...2728293031...下一页尾页