关键词:
我实现设计模式是基于C++语言的;
1、设计模式:主要是研究类与类之间的关系;
2、设计模式的基石:利用C++中的多态技术;
3、开闭原则:通过添加代码,而不是修改代码,完成功能的修改与扩展;
4、依赖倒置原则:产品和框架都向抽象层靠拢;
5、简单工产模式:不属于23种设计模式,将产品的创建都放到一个类(具体的工厂类)中去生产;
6、设计模式就是一种规定的形式,是一种套路,关键是理解思想;
7、简单工厂模式
简单工厂模式:创建型模式/静态工厂方法模式,不属于23种设计模式,
就是实实在在的构造一个工厂类(高內聚,新增添的话,必须修改原有代码,而不是扩充原有代码),不易扩充;
作用:用一个类去创建其它类,但都有一个接口(面向抽象类编程);
(1)、代码实现
#include<iostream> #include<string.h> using namespace std; class Fruit{ public: virtual void getFruit() = 0; private: }; class Banana : public Fruit{ public: virtual void getFruit(){ cout<<"我是香蕉......"<<endl; } private: }; class Apple : public Fruit{ public: virtual void getFruit(){ cout<<"我是苹果......"<<endl; } private: }; class Factory{ public: Fruit *create(const char *p){ if(strcmp(p, "banana") == 0){ return new Banana; }else if(strcmp(p, "apple") == 0){ return new Apple; }else{ cout<<"不支持"<<endl; } } private: }; int main(void){ Factory *f = new Factory; Fruit *fruit = NULL; //工厂生产香蕉 fruit = f->create("banana"); fruit->getFruit(); //工厂生产苹果 fruit = f->create("apple"); fruit->getFruit(); delete f; return 0; }
(2)、运行结果
本文出自 “wait0804” 博客,请务必保留此出处http://wait0804.blog.51cto.com/11586096/1885612
okhttp3设计思想学习(代码片段)
前言Okhttp的源码其实并不难,难的是对于Http的协议的熟悉程度.比如如何缓存.其实Okhttp参考了当前很多热门的浏览器源码而编写成的客户端.你可以看到很多线程数的设置都参考了主流浏览器.你可以把Okhttp视为一个无渲染界面的浏... 查看详情
java学习路线!java设计思想和设计模式
...核心有三点:技术基础+强烈的求知欲+耐心。1.1设计模式(45设计模式:介绍+优缺点+应用实例+源代码+解决问题)1.2Spring复习大纲:依赖注入Ioc+Beans+注解+数据访问+AOP+MVC等1 查看详情
软件设计思想
在学习资料满天飞的大环境下,知识变得非常零散,体系化的知识并不多,这就导致很多人每天都努力学习到感动自己,最终却收效甚微,甚至放弃学习。我的使命就是过滤掉大量的无效信息,将知识体系... 查看详情
spring的设计思想(代码片段)
在学习Spring框架的时候,第一件事情就是分析Spring的设计思想在学习Spring的时候,需要先了解耦合和解耦的概念耦合:简单来说,在软件工程当中,耦合是指对象之间的相互依赖耦合的坏处:耦合提升了代码的复杂度,不利于开发和维护,... 查看详情
面向对象编程思想-备忘录模式
...装到访问者类中,使得数据结构与操作分离。今天我们要学习的备忘录模式与命令模式有点相似,不同的是,命令模式保存的是发起人的具体命令(命令对应行为),而备忘录模式保存的是发起人的状态(状态对应数据内部结构... 查看详情
初识设计模式解析
学习设计模式源自:http://blog.csdn.net/bboyfeiyu?viewmode=contents以及与之相关的书籍:《Android源码设计模式---解析与实战》优秀的思想、架构、设计模式:Android是一个开源的系统,很多优秀的思想、架构、设计模式必然在它的源码中... 查看详情
面向对象的编程思想和java中类的概念与设计
面向对象的编程思想学习,面向对象内容的三条主线;1.java类及类的对象2.面向对象的三大特征3.其他关键字学习内容:3.1面向对象与面向过程面向对象与面向过程在应用上的区别Java中类的概念与设计类与类之间的关系面向对象的... 查看详情
springcloudstream消息驱动设计思想以及整合rabbitmq消息队列案例--学习笔记(代码片段)
一,RabbitMQ的安装和配置并启动参见RabbitMQ的安装和配置https://blog.csdn.net/weixin_43025151/article/details/123186641RabbitMQ启动成功:二,SpringCloudStream消息驱动1,设计思想一个标准的消息队列MQ,如下图:为什么用Cloud 查看详情
java基础学习——面向对象思想
学习Java,就离不开学习面向对象的编程思想。Java语言是纯粹的面向对象的程序设计语言,这主要表现为Java完全支持面向对象的三种基本特征:封装(encapsulation)继承(inheritance)多态(polymorphism)Java语言完全以对象为中心,Java程序的最... 查看详情
软件设计思想
...复用2软件设计的本质3设计思想、设计原则、架构模式、设计模式、编程规范、重构几者的关系4设计思想4.1结构化编程、面向对象、分层思想4.1.1从结构化设计到面向对象设计4.1.2从随心所欲的设计到结构化设计4.1.3从另一个维度... 查看详情
面向对象程序设计的总结
自学习面向对象程序设计语言以来,深深体会到这种语言的魅力。与面向过程设计语言相比,随着学习的深入,两者的风格不一更加凸显。面向过程程序设计语言,典型的有C语言、C++,面向过程是一种以过程... 查看详情
框架学习
...的意义,框架解决的问题,以及框架的实现用到的技术和设计模式。 --系统架构,加深对设计模式的理解,对于一些框架好的设计思想的吸收 查看详情
面向对象编程思想-命令模式
...应变化,让对象之间调用关系更加灵活。下面请看今天要学习的命令模式:二、命令模式定义:将 查看详情
面向对象编程思想-建造者模式
...设计中,同样存在这样的设计思想,下面介绍今天我们要学习的建造者模式二、建造者模式定义: 查看详情
lisp值得去学习吗
Lisp值得去学习。LISP语言适用于符号处理、自动推理、硬件描述和超大规模集成电路设计等。特点是,使用表结构来表达非数值计算问题,实现技术简单。LISP语言已成为最有影响,使用十分广泛的人工智能语言。在LISP语言中,... 查看详情
spring入门篇2---ioc设计思想
...以有更清晰的认知,所有的demo源码放在了github上,后续学习过程会进行持续的更新,以后不再 查看详情
面向对象编程思想-模板方法模式
...设计中,模板方法模式与之很相似,下面请看我们今天要学习的模板方法模式二、模板方法模式定义:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法... 查看详情
2018-2019-120165301《信息安全系统设计基础》第五周学习总结(代码片段)
2018-2019-120165301《信息安全系统设计基础》第五周学习总结学习目标了解常见的存储技术(RAM、ROM、磁盘、固态硬盘等)理解局部性原理理解缓存思想理解局部性原理和缓存思想在存储层次结构中的应用高速缓存的原理和应用学... 查看详情