设计模式
-
(原创)无废话C#设计模式之十四:Template Method
无废话C#设计模式之十四:Template Method 意图 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 场景 模版方法是非常容易理解的设计模式,一来是因为它没有过多结构上的交错,二来是因为这种代码复用技术对于掌握OO…
-
常用设计模式–三种工厂模式
2. 工厂模式 工厂顾名思义就是创建产品,根据产品是具体产品还是具体工厂可分为简单工厂模式和工厂方法模式,根据工厂的抽象程度可分为工厂方法模式和抽象工厂模式。 也就是说,工厂模式可分为简单工厂模式、工厂方法模式、抽象工厂模式三种,这里放在这一起分析。 2.1 简单工厂模式 简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。其…
-
高性能I/O设计模式Reactor和Proactor, 及epoll
系统I/O 可分为阻塞型, 非阻塞同步型,非阻塞异步型。 (Linux对aio支持的不完整,所以linux上用Reactor比较多;Proactor需要系统API支持真正的“异步”) 阻塞型I/O意味着控制权直到调用操作结束才会返回到调用者手里。因此调用者被阻塞了, 这段时间了做不了任何其它事情. 更郁闷的是,在等待IO结果的时间里,调用者所在线程此时无法腾…
-
[设计模式]<9>. C++与观察者模式(observer pattern)
作者:默默地EEer 原文:http://www.cnblogs.com/hebaichuanyeah/p/6091694.html 意图: 定义对象间一对多的依赖关系,使得一个对象被改变,其他对象被更新。 java的事件机制就是一个观察者模式,当事件发生,所有的事件接收者执行事件响应函数。 实现观察者模式,首先需要定义一个”观察者类(obser…
-
java面试题 单例设计模式
单例设计模式 某个类必须只有一个实例 (构造器私有化) 类必须自行创建实例(含有一个该类的静态变量存储该实例) 类自行向其他类提供这个实例 (对外提供获取该实例对象的方式) 饿汉式 在类初始化的时候直接创建对象 不存在线程安全问题 1、直接实例化饿汉式(简洁直观) 2、静态代码块饿汉…
-
PageObject设计模式,在selenium自动化测试中的运用
PageObject设计模式1. Web自动化测试框架(WebTestFramework)是基于Selenium框架且采用PageObject设计模式进行二次开发形成的框架。 2. web测试时,建议强烈推荐使用_谷歌或_火狐浏览器。3. PageObject设计模式:是将某个页面的所有”元素(包含控件)属性”及”元素操作”封装在1个类(Class)里面~~…
-
设计模式学习心得
学习到现在的主要问题是没有进行例子的完美历练,说白了,就是没动手亲自的试试,写写对应的代码,理解一下主要的设计思想,这个应该是学习设计模式我最重要的地方,那么现在针对之前学习的设计模式做一个总结和回顾吧 0.设计模式分析规律 在讲解这个设计模式之前,我们应该学习到设计的原则,1.分析程序中变化的位置,针对变化的位置进行封装隔离 分析是对鸭子的叫声和会飞进行了…
-
设计模式学习1:简单工厂模式实现加减乘除等运算
抽象基类(也可以用接口等实现):运算的基类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 简单工厂模式_四则运算 { abstract class O…
-
Go语言并发的设计模式和应用场景
生成器 在Python中我们可以使用yield关键字来让一个函数成为生成器,在Go中我们可以使用信道来制造生成器(一种lazy load类似的东西)。 当然我们的信道并不是简单的做阻塞主线的功能来使用的哦。 下面是一个制作自增整数生成器的例子,直到主线向信道索要数据,我们才添加数据到信道: func xrange() chan int{ // x…
-
设计模式 开闭原则
设计模式 – 开闭原则即 对立与统一原则 软件实体应该对扩展开放,对修改关闭,即实体应当通过扩展实现变化,而不是修改代码实现变化 什么是软件实体,项目或软件中按照一定逻辑规划划分的模块抽象 类方法 书店销售书籍 然后书写代码如下 // 书籍接口 public interface Ibook{ // 名称 public String getName(); //…