
设计模式
文章平均质量分 58
常见设计模式的学习笔记
jiange_zh
linux 网络编程 C++ 算法 数据结构
展开
-
【设计模式】简单工厂模式——以一个简单的计算器为例
本文内容参考自《大话设计模式》(程杰 著)1.拙劣的代码class Program{ static void Main(string[] args) { Console.Write("请输入数字A:"); string A = Console.ReadLine(); Console.Write("请选择运算符号(+、-、*、/):");原创 2015-12-04 13:51:04 · 6954 阅读 · 1 评论 -
【设计模式】策略模式——以商场促销为例
本文内容参考自《大话设计模式》(程杰 著)注:以下代码为java实现版本1需求:做一个商场收银软件,营业员根据客户所购买商品的单价和数量,向客户收费。关键代码:public class Cash{ private double total = 0; public void submit(int num, double price) { double t原创 2015-12-04 14:25:42 · 7372 阅读 · 1 评论 -
【设计模式】单一职责原则、开放封闭原则、依赖倒转原则
本文内容参考自《大话设计模式》(程杰 著)1. 单一职责原则(SRP)就一个类而言,应该仅有一个引起它变化的原因。(反例:游戏逻辑与界面写在一起,则引起变化的原因有2个)2. 开放-封闭原则(OCP)软件实体(类,模块,函数等等)应该可以扩展,但是不可修改。两个特征:对扩展是开放的,对更改是封闭的。 (简单工厂模式就不符合这个原则,而工厂方法模式符合)3. 依赖倒转原则A. 高层模块不应该依赖低原创 2016-05-31 22:39:50 · 953 阅读 · 0 评论 -
【设计模式】工厂方法模式
本文内容参考自《大话设计模式》(程杰 著)我们先回头看一看以计算器为例的简单工厂模式的结构图:简单工厂模式最大的优点就是工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。而缺点是,如果要增加新的功能,需要修改工厂类的方法,增加判断分支。这样子不但对扩展开放了,还对修改也开放了。而工厂方法模式的结构图如下:以计算器为例,其结构图如下:即每个原创 2016-05-31 22:53:19 · 615 阅读 · 0 评论 -
【设计模式】代理模式
本文内容参考自《大话设计模式》(程杰 著)代理模式为其他对象提供一种代理以控制对这个对象的访问。abstract class Subject{ public abstract void Request();}//RealSubject类,定义Proxy所代表的真实实体class RealSubject : Subject{ public override void Requ原创 2016-06-01 22:40:37 · 700 阅读 · 0 评论 -
【设计模式】装饰模式
能力要求:抽象能力 + 业务知识设计要结合具体的业务,如果业务知识不够,常常容易出现设计过度的现象——那些不常变的地方,简单即可。事实上,很多良好的设计都是迭代而来的,设计并非一成不变,如果从一开始就想设计好,很容易陷入过度设计。Q:设计一个类,其职责是将数据输出到文件。Class Iout { Public: int outToFile(); …… };如果想增加一个输出到网络的功能的呢原创 2016-07-17 23:11:58 · 708 阅读 · 0 评论