首页 > 其他分享 >1.设计模式与面向对象

1.设计模式与面向对象

时间:2024-03-26 21:46:40浏览次数:19  
标签:实现 money 接口 面向对象 模式 设计模式

目录

1. 设计模式

       设计模式是对软件设计中普遍存在或反复出向的各种问题所提出的解决方案。每一个设计模式系统地被命名、解释和评价了面向对象系统中一个重要和重复出现的设计。

2. 设计模式的分类

创建型模式:工厂方法模式、抽象工厂模式、创建者模式、原型模式、单例模式。隐藏底层模块的逻辑,关注怎么创建对象

结构型模式:适配器模式、桥模式、组合模式、装饰模式、外观模式、享元模式、代理模式。类之间如何协同工作,应该组成什么结构

行为型模式:解释器模式、责任链模式、命令模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、访问者模式、模板方法模式。关注行为,也就是方法,应该怎样某些行为

3. 面向对象

       设计模式解决的就是面向对象中的问题。需要指导面向对象的三大特性是 封装、继承和多态 ,封装是把数据和方法封装到类中,继承是类之间复用代码,多态在Python中默认支持的,Python是一种多态的语言。

4. 接口

       接口是若干抽象方法的集合。接口的作用是限制实现接口的类必须按照接口给定的调用方式实现这些方法,对高层模块隐藏了类的内部实现。下面通过一个简单的例子来加强对接口的理解:

from abc import ABCMeta, abstractmethod

# 具有抽象方法的类就是接口类,
class Payment(metaclass=ABCMeta):
    @abstractmethod
    def pay(self, money):
        """
        抽象方法,在实现的类中必须实现的方法。限制实现接口的类必须按照接口给定的调用方式实现这些方法
        :param money: 
        :return: 
        """
        pass

# 不能说是继承接口类,应该说是实现接口
class Alipay(Payment):
    def pay(self, money):
        """
        实现接口类中的必须实现的方法
        :param money:
        :return:
        """
        print("支付宝支付了{0}元!".format(money))

class WechatPay(Payment):
    def pay(self, money):
        """
        实现接口类中的必须实现的方法
        :param money:
        :return:
        """
        print("微信支付了%d元!" % (money))

# 下面是高层代码,在调用的时候是看不到底层类的内部实现
a = Alipay()
w = WechatPay()
a.pay(100)
w.pay(100)

标签:实现,money,接口,面向对象,模式,设计模式
From: https://www.cnblogs.com/thankcat/p/18097661

相关文章

  • 2.面向对象设计原则
    目录1.开放封闭原则2.里氏替换原则3.依赖倒置原则4.接口隔离原则5.单一职责原则1.开放封闭原则一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。即软件实体应该在不修改原代码的情况下进行修改。2.里氏替换原则所有引用父类的地方必须能透明地使用其子类地方必......
  • 面向对象 栈和堆
    Me:对象在栈中,属性在堆中,属性属于对象的一部分GPT:在Java中,对象的引用存储在栈中,而对象本身存储在堆中,属性和方法就是对象的本身。对象的属性确实存储在堆中,但是对象本身并不是存储在栈中,而是通过引用指向堆中的实际对象。Me:那对象的引用是在栈中,对象本身在堆中,那可以比喻成堆为......
  • [AI][osg]关于osg的options的设计模式
    Options说明OSG(OpenSceneGraph)是一个高性能的开源3D图形工具包,用于可视化仿真、游戏、虚拟现实、科学可视化等领域。它提供了一套丰富的API和工具,帮助开发者创建复杂的3D场景和应用程序。在OSG中,Options机制用于控制场景图读取过程中的各种参数和行为。通过Options,开发者可以指......
  • Spring中用到的一些设计模式
    单例模式:bean默认就是单例原型模式:指定作用域为prototype工厂模式:BeanFactory模板方法:postProcessBeanFactory,onRefresh,initPropertyValue策略模式:xmlBeanDefinitionReader,PropertiesBeanDefinitionReader观察者模式:listener,event,multicast适配器模式:Adapter......
  • JAVA面向对象基本概念、类和对象
    基本概念一、什么是面向对象面向对象是一种编程思想面向对象是一种思考问题的思维方式二、建立面向对象的思维方式先整体,在局部;先抽象,在具体;能做什么,再做什么类和对象类是分类类别,通过分类可以区分不同事物种类类是具有一组相同特征(属性)与行为(方法)的事物集合类和对象的......
  • C++面向对象整理(9)之类型转换 dynamic_cast、static_cast、const_cast及其安全性
    C++面向对象整理(9)之C++的类型转换dynamic_cast、static_cast、const_cast注:整理一些突然学到的C++知识,随时mark一下例如:忘记的关键字用法,新关键字,新数据结构C++的类型转换C++面向对象整理(9)之C++的类型转换dynamic_cast、static_cast、const_cast一、C++的类型转换......
  • 卡码java基础课 | 21.图形的面积(面向对象)
    学习内容:面向对象的特性,封装、继承、多态。重点归纳:成员变量的定义:访问修饰符、数据类型、变量名。访问修饰符,private只能类内部使用,protected只能类内部和子类使用,public可以从任何地方访问。方法:访问修饰符、返回类型、方法名、参数列表。以及构造函数。1.封装:通过将属性设......
  • 面向对象09;什么是继承
    一、Object类packagecom.oop.demo05;//在Java中,所有的类都默认直接或间接继承Object类//父类publicclassPerson{publicvoidsay(){System.out.println("说了一句话");}}packagecom.oop.demo05;//学生is人,派生类,子类//子类继承了父类,就会......
  • 面向对象08:封装详解
    packagecom.oop.demo04;//类private:私有publicclassStudent{//属性私有,封装大多数时候都是对于属性来的privateStringname;//名字,以前public所有人都可以操作这个名字,现在属性私有就不让所有人都可以操纵这个属性了privateintid;//学号priva......
  • JAVA面向对象高级三:泛型方法,泛型的通配符和泛型的上下限,泛型注意事项
         上限技术: 下限技术:   ......