c++学习记录3(GeekBand)

第三周的课学到有关面向对象的设计模式的东西。抛开课堂上讲的三种不谈,来说说常用的几种设计模式。

一、Strategy模式

1、两大原则

Strategy模式体现了如下的两大原则:

1,针对接口编程,而不是针对实现编程。

2,多用组合,少用继承。


二、Iterator模式

提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。

这种设计模式非常普遍,

比如Java里面的:

public interface Iterator {

boolean hasNext();

Object next();

void remove();

}

以及C++ STL里面的 iterator使用 ++ 访问。

三、Singleton模式

下面是个C++ singleton的类:

、、、

#ifndefSINGLETON_H

#defineSINGLETON_H


#include"synobj.h"


template

classSingleton{

CLASS_UNCOPYABLE(Singleton)

public:

staticT&Instance(){//Uniquepointofaccess

if(0==_instance){

Locklock(_mutex);

if(0==_instance){

_instance=newT();

atexit(Destroy);

}

}

return*_instance;

}

protected:

Singleton(){}

~Singleton(){}

private:

staticvoidDestroy(){//Destroytheonlyinstance

if(_instance!=0){

delete_instance;

_instance=0;

}

}

staticMutex_mutex;

staticT*volatile_instance;//Theoneandonlyinstance

};


template

MutexSingleton::_mutex;


template

T*volatileSingleton::_instance=0;


#endif

、、、


四、Factory Method模式

Factory Method模式在不同的子工厂类生成具有统一界面接口的对象,一方面,可以不用关心产品对象的具体实现,简化和统一Client调用过程;另一方面,可以让整个系统具有灵活的可扩展性。

abstract class BallFactory{

protectedabstractBallmakeBall();//FactoryMethod

}

classBasketballFactextendsBallFactory{

publicBallmakeBall(){//子类实现FactoryMethod决定实例化哪一个类的

returnnewBasketball();

}

}

classFootballFactextendsBallFactory{

publicBallmakeBall(){//子类实现FactoryMethod决定实例化哪一个类的

returnnewFootball();

}

}

classBasketballextendsBall{

publicvoidplay(){

System.out.println("playthebasketball");

}

}

classFootballextendsBall{

publicvoidplay(){

System.out.println("playthefootball");

}

}

abstractclassBall{

protectedabstractvoidplay();

}

publicclasstest{

publicstaticvoidmain(String[]args){

BallFactoryballFactory=newBasketballFact();

Ballbasketball=ballFactory.makeBall();

basketball.play();

ballFactory=newFootballFact();

Ballfootball=ballFactory.makeBall();

football.play();

}

}


这是几种常用的设计模式,剩下的还有很多,毕竟有23种呢。剩下的有时间慢慢学习。

ps:没找到简书怎么写代码。看着乱糟糟的格式,真是蛋疼。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,837评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,740评论 18 399
  • 一. Java基础部分.................................................
    wy_sure阅读 3,832评论 0 11
  • Week11 Notes “对象性能模式” 单间模式 面向对象很好地解决了抽象的问题,但是不可避免要付出一定的代价...
    古来征战几人回阅读 267评论 0 0
  • 23种设计模式 “对象性能”模式 面向对象很好的解决了“抽象”的问题,但是必不可免地要付出一定的代价。对于通常情况...
    孙浩_9bfd阅读 532评论 0 0