1.依赖关系(类图):做另一个类的参数或者返回值
2.开闭原则:增加代码,而不是修改代码
3.倒置依赖原则:向接口层靠拢
4.迪米特法则(Law of Demeter)又叫作最少知识原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。英文简写为: LoD.
5.实现单例的常用步骤:1.构造函数私有化 2.提供和一个全局静态方法 3.定义一个静态成员指针,指向本类
分为:懒汉式(考虑多线程问题)和饿汉式
单件模式属于工厂模式的特例,只是它不需要输入参数并且始终返回同一对象的引用。
单件模式能够保证某一类型对象在系统中的唯一性,即某类在系统中只有一个实例。它的用途十分广泛,打个比方,我们开发了一个简单的留言板,用户的每一次留言都要将留言信息写入到数据库中,最直观的方法是没次写入都建立一个数据库的链接。这是个简单的方法,在不考虑并发的时候这也是个不错的选择。但实际上,一个网站是并发的,并且有可能是存在大量并发操作的。如果我们对每次写入都创建一个数据库连接,那么很容易的系统会出现瓶颈,系统的精力将会很多的放在维护链接上而非直接查询操作上。这显然是不可取的。
如果我们能够保证系统中自始至终只有唯一一个数据库连接对象,显然我们会节省很多内存开销和cpu利用率。这就是单件模式的用途。当然单件模式不仅仅只用于这样的情况。在《设计模式:可复用面向对象软件的基础》一书中对单件模式的适用性有如下描述:
1、当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。
2、当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。
6.工厂模式智能生产一种产品,但抽象工厂模式能生产多种产品
7.建造者模式:
工程队、设计师和房子之间的关系
讲一个对象的构建和对象的表示进行分离
建造者模式是将一个复杂对象和他的构造和组装过程分离,这样再重复创建不同对象时使用相同的流程进行建造。对于调用者来说,只需要知道产品的类型,而不需要知道具体的组装过程。
8.原型模式:在原型模式中我们可以利用过一个原型对象来指明我们所要创建对象的类型,然后通过复制这个对象的方法来获得与该对象一模一样的对象实例。这就是原型模式的设计目的。
9.
代理模式:为其他对象提供一种代理以控制对这个对象的访问。这样实现了业务和核心功能分离。
UML 图:
10.桥接模式:作用:将抽象部份与它的实现部份分离,使它们都可以独立地变化。
class Phone
{
public:
Car(PhoneSoft* ps)
{
this->m_ps = ps;virtual void InstallSoft() = 0;
protected:
PhoneSoft* m_ps;};