惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
博客园 - Franky
大猫的无限游戏
大猫的无限游戏
博客园 - 三生石上(FineUI控件)
量子位
博客园 - 聂微东
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
SegmentFault 最新的问题
Apple Machine Learning Research
Apple Machine Learning Research
爱范儿
爱范儿
V
Visual Studio Blog
雷峰网
雷峰网
T
Tailwind CSS Blog
宝玉的分享
宝玉的分享
Blog — PlanetScale
Blog — PlanetScale
有赞技术团队
有赞技术团队
博客园 - 叶小钗
Microsoft Azure Blog
Microsoft Azure Blog
T
The Blog of Author Tim Ferriss
U
Unit 42
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
小众软件
小众软件
阮一峰的网络日志
阮一峰的网络日志
Y
Y Combinator Blog

博客园 - zyi

Windows FTP安装 组合模式 Oracle优化 Oracle的汉字转拼音首字母的函数 创建job 建索引 加解密 代码规范工具 耦合内聚封装 Dev进度条 SQL_SERVER 导oracle(转) SQL_SERVER 连接oracle(转) win7电脑上wifi Oracle对象统计信息 关于odp.net的FetchSize属性 技巧类 linq in 语法 静态与非静态(转改) 关于引擎的设计
温习设计模式
zyi · 2013-02-25 · via 博客园 - zyi

以前也看过一次设计模式,但是除了工厂方法和单例,其他都没怎么用。这才决定重温下,一天看一个设计模式。感觉UML的继承关系不重要,关键是什么情况下,应该用什么模式。至于继承关系忘记了,可以查书再看。

抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。这里的例子是动物世界。非洲动物、美洲动物、亚洲动物

每个洲的动物又都有食肉动物、食草动物。但具体的食肉动物和食草动物是不一样的。这时候可以使用抽象工厂。new一个动物世界类,传入泛型的子类。然后调用动物世界类对应的子类,这时当情况发生变化后只要修改对应的泛型参数即可。或者本来就有对应的下拉选择。这里要注意的是抽象工厂是有对应的产品族的。一般情况下用工厂就可以了。

抽象工厂模式与生成器相似,因为它也可以创建复杂对象。主要的区别是生成器模式着重于一步步构造一个复杂对象。而抽象工厂模式着重于多个系列的产品对象(简单的或是复杂的)。生成器在最后的一步返回产品,而对于抽象工厂来说,产品是立即返回的。这里可以举这样一个例子,不同的人都由头、身体、手、脚组成。但每个人的原地摸高都是不同的。而原地摸高其实在构造每个人的个体时已经产生了。这时我们可以用生成器模式。

工厂方法的话就是没有产品族了,就比如现在有同样的insert和delete方法,但一个是Oracle一个是sql的,这时可以用工厂方法实现。这也就能解释为什么实际中工作中基本都是工厂方法,很少用到抽象工厂和生成器了。

原型模式就是克隆,C#本身已经实现了,不用考虑。

单例就是如果实例没有则创建,否则直接返回。始终保证实例只有一个。