(?:pattern) (?=pattern) (?!pattern)】的更多相关文章

Singleton Pattern, 即单例模式,用于获取类的一个对象,该对象在整个应用中是其类的唯一对象.单例模式属于创建类的设计模式. SingleObject 作为单例类,内含了一个静态私有的 SingleObject 成员变量,将构造方法私有化使得外部无法构造 SingleObject 的对象,同时提供一个公共的 getInstance 方法,提供唯一的对象. 代码实现: 单例类 SingleObject public class SingleObject { private stati…
Factory Pattern , 即工厂模式,用于创建对象的场景,属于创建类的设计模式 . 下面是一个工厂模式案例. Shape 作为接口, Circle, Square, Rectangle 作为具体类实现了 Shape 接口. ShapeFactory 封装了创建各个 Shape 的方式,隐藏了 new 命令.FactoryPatternDemo 用于演示工厂模式. 具体代码: Shape 接口定义 public interface Shape { public void draw();…
简单记录一下大小括号在Linux中的用处. 1.${var},这是Linux中变量的原形.所以$var,别忘记了你的本来面目. # a= # echo $a # echo ${a} # echo ${a}b 10b 2.$(command)与`command`效果相同,意为用command命令执行得到的标准输出来替换$(command). # echo $(ls) temp1 temp2 #echo `ls` temp1 temp2 3.()与{}两者都是用来执行一串命令的.但是有区别的哦 #两…
共同点 (?:pattern) 与 (?=pattern)都匹配pattern,但不会把pattern结果放到Matches的集合中. 区别 (?:pattern) 匹配得到的结果包含pattern. (?=pattern) 则不包含. 对字符串:"industry abc"的匹配结果: industr(?:y|ies) ---> "industry" industr(?=y|ies) ---> "industr" 是否消耗字符 (?…
场景 适配器模式 总结 参考资料 场景 在编程中我们经常会遇到驴头不对马嘴的情况,比如以前是继承A的接口的对象,现在外部调用的时候需要该对象已B接口的形式来调用 ,这个时候我们可以让对象同时集成A和B接口来达到目的,不过,这样又违反了开闭原则,这个时候我们可以使用适配器模式来达到目的. 适配器模式 适配器模式是一种结构模式,可以帮助我们把对象以不同的接口方式来调用.主要由3个角色组成: Target 外部调用要求的接口方式 Adapter 中间用来协调的适配器 Adaptee 原始对象 首先,我…
1. Brief 一直对Observer Pattern和Pub/Sub Pattern有所混淆,下面打算通过这两篇Blog来梳理这两种模式.若有纰漏请大家指正. 2. Use Case 首先我们来面对一个老到跌渣的故事,并以从未听说过Observer Pattern为前提. 假设要设计一个新闻订阅系统,新闻分为商业.体育和八卦3种,而查收终端有PC.移动终端等,后续还不断增加新闻种类和查收终端. 需求如上,下面我们根据OOD的方式来构建概念模型. 新闻 <- 分类新闻 终端 <- 分类终端…
1. Brief 一直对Observer Pattern和Pub/Sub Pattern有所混淆,下面打算通过这两篇Blog来梳理这两种模式.若有纰漏请大家指正. 2. Role Publisher:消息发布者,组装原始消息实体并触发消息传递的主体. Subscriber:消息订阅者,接收消息实体并作出响应的主体. Message Broker or Event Bus:消息发布者 与 消息订阅者 间的媒介,内含消息过滤和消息路由的功能,并可通过内置的消息队列(message queue)现实优…
Data Access Object Pattern, or DAO Pattern, 即 DAO 模式,用于分离底层的数据访问接口,已经上层的业务逻辑. 下面是 Dao 模式的一个简单的案例. Student 是纯 Java Beans 类.StudentDao 定义 Dao 的访问接口,StudentDaoImpl 实现该接口. DaoPatternDemo 演示 Dao 模式 代码实现 Student ,是纯数据对象 public class Student implements Clon…
Observer Pattern,即观察者模式,当存在一对多关系,例如一个对象一有变动,就要自动通知被依赖的全部对象得场景,属于行为类的设计模式. 下面是一个观察者模式的简单案例. Observer 定义观察者的接口,定义需要观察的对象,已经被通知的接口.BinaryObserver, OctalObserver, HexaObserver 各自实现了 Observer 接口. Subject 是被观察的对象,记录了观察该对象的观察者列表,自身有变动,即可通知观察者列表中的各个观察者. 代码实现…
Meditor Pattern,即调解模式,用一个调解类类处理所有的沟通事件,使得降低多对象之间的沟通难度,属于行为类的设计模式.为了方便理解记忆,我也称其为,沟通模式. 下面是一个调解模式的简单案例. ChatRoom 提供公用发送短信的方法.User 全部通过 ChatRoom 类发送信息进行沟通.MediatorPatternDemo 演示调解模式. 代码实现 ChatRoom 提供发送信息的方法 public class ChatRoom { public static void sho…
Iterator Pattern,即迭代时模式,按照顺序依次遍历集合内的每一个元素,而不用了解集合的底层实现,属于行为类的设计模式.为了方便理解记忆,我也会称其为遍历模式. 下面是一个迭代器模式的简单案例. Iterator 定义了迭代接口, 仅 hasNext 和 next 两个方法.Container 定义了集合的接口,必须包含一个返回迭代器类 Iterator 的方法.NameRepository 是容器的具体类,实现 Container 接口,并拥有一个内部类 NameIterator…
Command Pattern, 即命令模式,把一个命令包裹在一个对象里面,将命令对象传递给命令的执行方,属于行为类的设计模式 下面是命令模式的一个简单案例. Stock 代表被操作的对象.Order 定义命令的接口,BuyStock, SellStock 是具体类,实现 Order 接口.Broker 是命令的执行方.CommandPatternDemo 演示命令模式. 代码实现 Order, 命令接口 public interface Order { public void execute(…
Proxy Pattern, 即代理模式,用一个类代表另一个类的功能,用于隐藏.解耦真正提供功能的类,属于结构类的设计模式. 下面是 代理模式的一个简单案例. Image 定义接口,RealImage, ProxyImage 都实现该接口.RealImage 具有真正显示功能,ProxyImage 作为代表,暴露给客户端使用. 代码实现: public interface Image { public void display(); } RealImage 的实现,提供真正的功能 public…
Flywight Pattern, 即享元模式,用于减少对象的创建,降低内存的占用,属于结构类的设计模式.根据名字,我也将其会理解为 轻量模式. 下面是享元模式的一个简单案例. 享元模式,主要是重用已有的对象,通过修改部分属性重新使用,避免申请大量内存. 本模式需要主要两个点: 1. 对象的 key 应该是不可变得,本例中 color 作为 key,所以我在 color 前添加了 final 的修饰符. 2. 并非线程安全,多个线程同时获取一个对象,并同时修改其属性,会导致无法预计的结果. 代码…
Facade Pattern, 即外观模式,用于隐藏复杂的系统内部逻辑,提供简洁的接口给客户端调用,属于结构类的设计模式.我会将其名字理解为,门户模式. 下面是 Facade Pattern 的一个简单案例. Shape 定义一个接口,Circle, rectangle, Square 分别实现 Shape 接口,代表系统内部的一个功能.ShapeMaker 作为一个对外类,提供简洁的接口给外部调用. 代码实现: Shape 接口 public interface Shape { public…
Filter Pattern,即过滤模式,通过不同的过滤标准,或者低耦合将过滤标准组合在一起,对一组对象进行过滤,属于结构类的设计模式. 下面是一个过滤模式的简单案例. Criteria 定义过滤接口,CriteriaFemale, CriteriaMale, AndCriteria, OrCriteria 类实现过滤接口.Person 是被过滤的对象.CriteriaPatternDemo 演示过滤模式. 具体代码: 过滤对象 Person 的实现 public class Person {…
Adapter Pattern, 即适配器模式,用于连接两个不兼容的接口,属于结构类的设计模式. 或者叫做,转换器模式. 下面是一个转换器模式简单案例. 假设已有 AudioPlayer 专门播放 mp3 格式文件,VlcPlayer 和 Mp4Player 是高级播放器,分别播放 vlc 和  mp4 格式文件,客户端代码调用 AudioPlayer 来播放 mp3 格式的文件. 此时,不想修改 AudioPlayer 和 AdvanceMediaPlayer 的接口,也不希望修改客户端 Ad…
发现公司的代码好像有用到 Command Pattern,回顾重温下. Command Pattern 的类图结构如下: 参考 <Head First Design Patterns(英文版)>P245 绘制 我所理解的 Command Pattern 如图. caller, action, subject 分别对于类图中的 Invoker, Command, Receiver, 他们都可以由使用者 Client 进行配置 参考资料: Head First Design Pattern. 推荐…
目录: 前言 1. Stratrgy Pattern 2. Observer Pattern 3. Decorator Pattern 4. Factory Pattern 4.1 FactoryPattern 4.2 AbstractFactoryPattern 总结 返回顶部 前言: 因为在学习过程中总是不断忘记,很多东西也是一知半解,所以学一点就又倒回来再复习一次,第一次学习的时候我主要以实现书中的代码为主,而现在复习的时候我就以弄清楚逻辑为主了,毕竟第一次基本都是只要能实现功能就大吉大利…
这两个函数除了调用对象以及参数不同之外,<javascript高级程序设计>中对exec描述比较详细,对match只是说返回数组跟exec一样.书中并没有说只说了正则在非全局模式下的情况,但是其实在正则全局模式下则有很大区别. 一.非全局模式下 在非全局模式下,两种方法返回结果相同,我们以match为例. 我们首先来看代码 var str="cat,bat,sat"; var pattern=/.at/; var matches=str.match(pattern); co…
(?:pattern) ()表示捕获分组,()会把每个分组里的匹配的值保存起来,从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推 (?:)表示非捕获分组,和捕获分组唯一的区别在于,非捕获分组匹配的值不会保存起来 import re a = "123abc456" pattern = "([0-9]*)([a-z]*)([0-9]*)" print(re.search(pattern,a).group(0,1,2,3)) pattern…
bad code // BEFORE: 5 globals // Warning: antipattern // constructors function Parent() {} function Child() {} // a variable var some_var = 1; // some objects var module1 = {}; module1.data = {a: 1, b: 2}; var module2 = {}; good code // AFTER: 1 glob…
详细见<C++设计模式 23种设计模式.pdf 55页> 在面向对象系统的分析与设计过程中经常会遇到这样一种情况:对于某一个业务逻辑(算法实现)在不同的对象中有不同的细节实现,但是逻辑(算法)的框架(或通用的应用算法)是相同的.Template 提供了这种情况的一个实现框架. Template 模式是采用继承的方式实现这一点:将逻辑(算法)框架放在抽象基类中,并定义好细节的接口,子类中实现细节.[注释 1]Strategy 模式解决的是和 Template 模式类似的问题,但是 Strateg…
#!/usr/bin/perl use strict; use warnings; $_=' $$ oinn &&& ninq kdownc aninp kkkk'; if (/(.*)k\Z/){print "$1\n";}else{print "no match\n";} # kkk if (/^n(.*)/m){print "$1\n";}else{print "no match\n";} #in…
本文来讲解一下两个结构比较相似的行为设计模式:策略模式和状态模式.两者单独的理解和学习都是比较直观简单的,但是实际使用的时候却并不好实践,算是易学难用的设计模式吧.这也是把两者放在一起介绍的原因,经过对比和实例介绍,相信应该会一些比较深刻的感知.最后在结合个人的体会简单聊一下对这两个模式的一些看法. 1. 模式概念 1.1 策略模式 运行时更改类的行为或算法,从而达到修改其功能的目的: 使用场景: 一个系统需要动态地在几种算法中选择一种,而这些算法之间仅仅是他们的行为不同. 此外决策过程中过多的…
Segregate operations that read data from operations that update data by using separate interfaces. This pattern can maximize performance, scalability, and security; support evolution of the system over time through higher flexibility; and prevent upd…
Undo the work performed by a series of steps, which together define an eventually consistent operation, if one or more of the steps fail. Operations that follow the eventual consistency model are commonly found in cloud-hosted applications that imple…
Bridge Pattern, Composite Pattern, Decorator Pattern, Facade Pattern, COR Pattern, Proxy Pattern, template Pattern, MVC. Updated with the explanation of Composite pattern, Decorator Pattern and Template Pattern. Design Pattern Interview Question - Pa…
Interpeter , Iterator , Mediator , Memento and Observer design patterns. (I) what is Interpreter pattern? (B) Can you explain iterator pattern? (A) Can you explain mediator pattern? (I) Can you explain memento pattern? (B) Can you explain observer pa…
State, Stratergy, Visitor Adapter and fly weight design pattern from interview perspective. (I) Can you explain state pattern? (I) Can you explain strategy pattern? (A) Can you explain visitor pattern? (A) What the difference between visitor and stra…