学习设计模式的思想

我实现设计模式是基于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)、运行结果

时间: 2024-10-25 08:40:12

学习设计模式的思想的相关文章

学习设计模式个人思想总结

1.就是首先将需求中的变于不变进行确定 2,不变的东西首先将其进行 确定, 而那些最能变的东西要将其进行逻辑上的是抽象,抽象最高的最好使接口, 最为核心的思想是将 变得东西你最好将其进行先抽象出来,而后其如何进行变进行进一步进的细化 ,对其进行留出来一些余地,以用来以后的变化 设计模式可能在一些需求较为确定的时候,或者对于一些莫些一些较为确定的场景的应用较为好, 但是他却不能将其进行用于对用户的需求频繁的变化进行一次性的成功 个人学学习心得: 1.其实,23中设计模式都是要到达一种开闭原则(对扩

如何学习设计模式

GoF的[设计模式]是经典著作,有人看了好多遍仍然说没有看懂,许多人看懂了一些模式但不知道如何应用--这里,yqj2065抛砖引玉,讨论一下如何学习设计模式. ①    学习技巧 学习设计模式时,有一些技巧能够帮助你快速理解设计模式. a)        使用较简单的面向对象的语言如Java.C#.GoF的[设计模式]实质上是面向对象的设计模式.[GoF·1.1]中提到"程序设计语言的选择非常重要,它将影响人们理解问题的出发点".从学习设计模式的角度看,Java和C#较C++更容易一些

如何通俗理解设计模式及其思想

术与道 数据结构,算法,设计模式被认为是程序员必备技能的三叉戟,如果说编程语言的语法特性和业务编码能力是[术],那么这三者可以称得上是[道]--[术]可以让你在IT行业赖以生存,而[道]则决定你未来在技术这条道路上可以走多远. 边学边忘的窘境 先自我介绍一下. 我是一个两年工作经验的Android开发人员,就像很多同行一样,对于数据结构,算法,设计模式这些被奉为程序员必修的三门内功,几乎没有去系统性地学习过(曾经专业课的数据结构,如今也基本还给了老师). 你问我想不想当一个称职的程序员,当然!数

数据库学习设计模式--组合模式

介绍: 想必你已经了解了数据结构中的树,ok,组合模式对于你就是一会儿的功夫了.组合模式相对来说比较简单.看一下定义 abstract class Component { protected String name; //这个用来标示一下节点 public Component(String name) { this.name = name; } public abstract void add(Component c);//增加儿子节点 public abstract void remove(C

(转)深度学习前沿算法思想

深度学习前沿算法思想 本文转自: https://mp.weixin.qq.com/s?__biz=MzA5NDExMTAzNA==&mid=2649981646&idx=2&sn=8fe05eac5a5068efb65ca1602e5fd3a0&chksm=8854b69bbf233f8db5dbaa1ea8396d181c9a35e760ab3c1c4934b504f69fe92683972d78d327&mpshare=1&scene=2&sr

跟着ZHONGHuan学习设计模式--组合模式

跟着ZHONGHuan学习设计模式 组合模式 介绍: 想必你已经了解了数据结构中的树,ok,组合模式对于你就是一会儿的功夫了.组合模式相对来说比较简单.看一下定义 组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构.使得用户对单个对象和组合对象的使用具有一致性. 暂时没有想到好的例子,如果你有,请告诉我.下面我用树来对组合模式进行解释.树的结构是下面的这样的: 没棵树有一个根节点,也有叶子节点和树枝节点,一些结构都是用树结构表示的,例如树形菜单,文件和文件夹目录.那么如何存储管理这样的

学习设计模式--观察者模式(C++)

1. 说说简单的函数回调 首先说说一种简单的函数回调机制(一种通过获取对象的指针来进行函数的调用方法)以下是代码演示--- 这是观察者(被回调)部分: class Observer { public: // 抽象观察者的纯虚函数 virtual void UpdateMessage() = 0; }; class ConcreteObserver : public Observer { public: // 实现抽象类的纯虚函数 void UpdateMessage(); } void Conc

《HeadFirst设计模式》读后感——对学习设计模式的一些想法

最近看完了<HeadFirst设计模式>,GOF的<设计模式——可复用面向对象软件的基础>的创建型模式也读完了,经历了从一无所知到茅塞顿开再到充满迷惑的过程. 不得不说<HeadFirst设计模式>是一本非常好的入门书,每一章都是先提出问题,然后讨论.分析,引导出相应的设计模式,再一步一步的实现,幽默的语言和有趣的插图,让人轻松愉快的学习了一个模式.之前我对学习设计模式是有很大的畏难情绪的,上网一搜一看,妈个鸡,动不动就什么GOF什么23个设计模式,然后找个工厂方法或者

Java研究之学习设计模式-简单工厂模式详解

 简介: 从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例. 类图: 从UML类图中,可以看出,简单工厂模式的意思,就是把一个类内部,需要生成的部分,提取出来,变为一个工厂,通过工厂来new对象. 假设我们要吃苹果了,我们可以在代码中new一个苹果出来:当我们需要吃香蕉了,我们在代码中new一个香蕉出来.这种做法你会不会觉得麻烦