- 博客(12)
- 收藏
- 关注
原创 观察者模式
一,观察者模式1.1,对观察者模式的理解观察者模式: 定义了一种一对多的依赖关系,让许多观察者对象同时监听某一主题对象。这个主题对象在状态发生变化时,会通知所有的观察者对象,使他们能够自动更新自己。1.2,...
2018-10-29 11:06:06 180
原创 模板方法模式
一,模板方法模式1.1,对模板方法模式的理解模板方法模式: 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。1.2,解决的问题当要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,通常考虑使用模板方法模式来处理。通俗的来讲就是,有一些方法比较通用,但是在每一个子类都...
2018-10-26 17:49:32 199
原创 原型模式
一,原型模式1.1,对原型模式的理解原型模式: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。1.2,要解决的问题主要解决对象的创建问题,提升创建对象的性能。每new一次就会调用一次构造函数,如果构造函数的执行时间很长,多次执行这个初始化操作就要消耗很多时间降低效率。一般在初始化的信息不发生变化的情况下,克隆是最高的方法,这即隐藏了对象创建的细节,又对性能是大大的提...
2018-10-26 14:29:31 603
原创 工厂方法模式
一,工厂方法模式1.1,对工厂方法模式的理解工厂方法模式: 定义一个创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。1.2,解决的问题解决实例化对象的问题。1.3,应用场景接着前面的计算器程序,如果想往前面的计算器程序里面添加乘法运算,使用简单工厂模式实现的话,就要定义一个乘法类,同时要对工厂进行修改,增加一个case判断语句,这就对原有的类进...
2018-10-25 18:25:22 777
原创 代理模式
一,代理模式1.1,对代理模式的理解代理模式: 为其他对象提供一种代理以控制对这个对象的访问。1.2,应用场景通过代理实现数据库的操作,下面是程序的结构框图与具体的程序实现// 数据库访问接口class IDBManager{public: void insert();};// 实现类class SQLServer : public IDBManager{p...
2018-10-25 13:53:51 166
原创 里式替换原则
一,里式替换原则1.1,继承的优缺点优点:子类拥有父类的所有方法和属性,提高了代码的可复用性。提高了代码的扩展性,子类不但拥有了父类的所有功能,还可以添加自己的功能。缺点:继承是侵入性的。只要继承,就必须拥有父类的所有属性和方法。降低了代码的灵活性。因为继承时,父类会对子类有一种约束。增强了耦合性。当需要对父类的代码进行修改时,必须考虑到对子类产生的影响。有时修改了一点点代码...
2018-10-24 17:48:44 3216
原创 依赖倒置原则
一,依赖倒置原则1.1,什么是依赖倒置?高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。抽象不应该依赖于具体实现,具体实现应该依赖于抽象。也就是说要面向接口编程,不能面向实现编程。1.2,应用场景做一个订单处理系统,主要的操作是往数据库里添加记录,下面实现的是面向实现编程的版本,例如:// SQLServerclass SQLServer{public: vo...
2018-10-24 16:20:52 3383
原创 开闭原则
一,抽象类1.1,什么是抽象类?抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。比如,在一个图形编辑软件的分析设计过程中,就会发现问题领域存在着圆、三角形这样一些具体概念,它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域并不是直接存在的,它就是一个抽象概念。而正是因为抽象的概念在问题领域没有对应的具体概念...
2018-10-24 09:19:53 1485
原创 单一功能原则
一,单一功能原则1.1,对单一功能原则的理解对于一个类而言,应该仅有一个引起它变化的原因。对象不应该承担太多职责,只有对象的职责比较单一,才能保证对象的高内聚,对象的高内聚有利于对象的重用。1.2,单一功能原则的优缺点优点:单一功能原则有利于对象的稳定。所谓"职责",就是对象能够承担的责任,并以某种行为方式来执行。对象的职责总是要提供给其他对象调用,从而形成对象与对象的协作,由此产...
2018-10-23 15:23:02 1172
原创 策略模式
一,策略模式1.1,应用场景做一个商场的收银软件,根据商品的价格以及优惠条件,计算出最终的价格,对应的代码如下:// 折扣算法接口class IStrategy{public: virtual double getPrice(double price) = 0;};// 商品打8折class ConcreteStrategyA : public IStrategy{ ...
2018-10-23 10:11:13 143
原创 简单工厂模式
一,简单工厂模式1.1,使用面向对象的原则做一个计算器// 运算符类基类class Operation{public: Operation(double a, double b):numberA(a), numberB(b){} double getResult();protected: double numberA; double numberB;};// 加法运算c...
2018-10-22 15:39:29 146
原创 抽象工厂模式
一,抽象工厂模式1.1,最基本的数据访问程序class User{ private int id; private string name;};class SqlServerUser{ public void insert(User &user) { // 在SQL Server中给User表增加一条记录 } public void getUser(int ...
2018-10-19 10:05:44 156
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人