策略模式ThreadPoolExecutor的RejectedExecutionHandler,实现不同的拒绝策略。 装饰者模式BufferedInputStream对InputStream扩展buffer功能。 工厂模式Executors作为工厂,提供各种ExecutorService。 命令模式Runnable。线程池将Runnable任务放入队列,由worker线程调用执行。 模板方法模式Collections.sort对象需要实现Comparable接口的compareTo方法。 责任链模式ChannelPipeline中每个channelHandler处理read,write。各种hand...
<?php
header("Content-type:text/html;charset=utf-8");abstractclass msg{protected $send = null;public function __construct($send){$this->send = $send;}abstract function msg($content);function send($to, $content){$content = $this->msg($content);$this->send->send($to, $content);}
}/**
* 普通信
*/class ZnMsg
{public function send($to, $content){echo "给".$to."发送站内信:<br>".$content;}
}/**
* email...
本篇是我学习设计模式后的第一篇文章,由于本模式也比较简单,在此我就多啰嗦一下。学习本模式之前请下看一下我的《大话设计模式铺垫》文章,然后回答思考如下问题:1、UML类图看懂了吗?2、java的3大特性真的懂了吗?知道为什么要封装、继承、多态了吗? 对于和我一样的菜鸟而言,我根本就不知道什么是设计模式,那怎么办?学呗。怎么样的学习设计模式呢?看UML类图,然后结合代码加以理解,废话不多刷,先上图: 从图中我独处了如...
最近拜读了曾探所著的《JavaScript设计模式与开发应用》一书,在读到发布-订阅模式一章时,作者不仅给出了基本模式的通用版本的发布-订阅模式的代码,最后还做出了扩展,给该模式增加了离线空间功能和命名空间功能,以达到先发布再订阅的功能和防止名称冲突的效果。但是令人感到遗憾的是最终代码并没有给出足够的注释。这让像我一样的小白就感到非常的困惑,于是我将这份最终代码仔细研究了一下,并给出了自己的一些理解,鉴于能力...
1 2{《HeadFirst设计模式》之单例模式 } 3{ 编译工具: Delphi2007 for win32 } 4{ E-Mail : guzh-0417@163.com } 5 6unit uChocolateBoiler; 7 8interface 910type11 TChocolateBoiler = class(TObject)12 strict private13 class var14 FUniqueInstance: TChocolateBoiler;15 strict private16 FEmpty : Boolean;17 FBoiled: Boolean;18 constructor Create;19 public20 class function GetInstance: TC...
那些迷信设计模式的人,来修改一下这个方法吧。看看你最终的代码膨胀为几倍。。。public virtual PasswordChangeResult ChangePassword(ChangePasswordRequest request) { if (request == null) throw new ArgumentNullException("request"); var result = new PasswordChangeResult(); if (String.IsNullOrWhiteSpace(request.Email)) { resul...
【JS 设计模式 】用组合模式来实现树形导航--代码结构思路分析(一)根据上一节中的HTML代码结构我们通过JS来渲染HTML代码,我们先提供一下JS的代码片段,这代码代码不是一个完整的代码是经过简化的。通过JS代码来分析如何组装HTML的Composite类型的代码:function TreeComposite(id, name, total, level, last) {var root = document.createDocumentFragment();var panel = document.createElement("div");panel.setAttribute("cl...
<?php
header("Content-type:text/html;charset=utf-8");
/**
* 共同接口
*/interface db
{function conn();
}/**
* mysql类
*/class DbMysql implements db
{public function conn(){echo "连接上了mysql<br>";}
}/**
* sqlite类
*/class DbSqlite implements db
{public function conn(){echo "连接上了sqlite<br>";}
}/**
*
*/class Factory
{publicstatic function createDb($type){if ($type == ‘mysql‘) {$db = new DbMys...
一、模式的定义与特点 观察者(Observer)模式的定义:观察者模式又被称为发布-订阅/模型-视图模式,属于行为型设计模式的一种,是一个在项目中经常使用的模式。指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。二、观察者模式优缺点 观察者模式是一种对象行为型模式,其主要优点如下:降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系。目标与观察者之...
Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛,它的设计模式是Template Method Pattern。这是一个爬虫框架,所以它需要请求网页模块,下载网页模块,处理网页信息模块,对所需要的信息进行存储的模块。对于一个爬虫工程师来说,需要爬取的不只是一个网站,在对多个网站进行爬取,为了简化编写爬虫的过程,对上面几个模块来说,是爬虫所共有的流程,因此可以把他们固定下来。框架的力...
Singleton和Double-Checked Locking设计模式,分别指的是单例模式和双重检查锁模式,它们都可以用于确保某个类只有一个对象实例化。两个模式的区别在于:Singleton模式用在单线程应用程序中,而Double-Checked Locking模式用于多线程模式。一、Singleton模式UML图:代码: [java] view plaincopy package bupt.xujinliang.singletonpattern; /** * * @author jin * */ public class SingletonExample { public static v...
<?php
header("Content-type:text/html;charset=utf-8");/**
* 文章编辑类
*/class Article
{protected $content;protected $art = null;public function __construct($content){$this->content = $content;}public function decorator(){return $this->content;}
}/**
* 小编加个摘要
*/class BianArticle extends Article
{public function __construct(Article $art){$this->art = $art;$this->decorator();}public function d...
软件设计模式分为三种类型:创建型结构型行为型 本文以行为型中的模板方法模式(Template Method)为例,分析其代码结构特性一、什么是模板模式方法??模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板模式方法由抽象类和具体类组成:抽象类:定义抽象的原语操作,具体子类将重定义它们来实现算法的步骤。实现一个模板...
组合模式又叫部分整体模式,在处理类似树形结构的问题时常用。publicclass TreeNode { private String name; private TreeNode parent; private Vector<TreeNode> children = new Vector<TreeNode>(); public TreeNode(String name){ this.name = name; } public String getName() { return name; } publicvoid setName(String name) { this.name = name; } public TreeNode getParent() { return parent; } publi...
1 2{《HeadFirst设计模式》之组合模式 } 3{ 组合与单项的抽象父类 } 4{ 编译工具:Delphi2007 for win32} 5{ E-Mail :guzh-0417@163.com } 6 7unit uMenuComponent; 8 9interface1011uses12 SysUtils;1314type15 TMenuComponent = class abstract(TObject)16 public17 procedure Add(aMenuComponent: TMenuComponent); virtual;18 procedure Remove(aMenuComponent: TMenuComponent); virtual;19 functio...