《大话设计模式》ruby版代码:简单工厂模式

之前有看过《ruby设计模式》,不过渐渐的都忘记了。现在买了一个大话设计模式,看起来不是那么枯燥,顺便将代码用ruby实现了一下。

# -*- encoding: utf-8 -*-

#运算类
class Operation
    attr_accessor :number_a,:number_b

    def initialize(number_a = nil, number_b = nil)
        @number_a = number_a
        @number_b = number_b
    end

    def result
        0
    end
end

#加法类
class OperationAdd < Operation
    def result
        number_a + number_b
    end
end

#减法类
class OperationSub < Operation
    def result
        number_a - number_b
    end
end

#乘法类
class OperationMul < Operation
    def result
        number_a * number_b
    end
end

#除法类
class OperationDiv < Operation
    def result
        raise ‘除数不能为0‘ if number_b == 0
        number_a / number_b
    end
end

#工厂类
class OperationFactory
    def self.create_operate(operate)
        case operate
        when ‘+‘
            OperationAdd.new()
        when ‘-‘
            OperationSub.new()
        when ‘*‘
            OperationMul.new()
        when ‘/‘
            OperationDiv.new()
        end
    end
end

oper = OperationFactory.create_operate(‘/‘)
oper.number_a = 1
oper.number_b = 2
p oper.result
时间: 2024-10-16 01:19:58

《大话设计模式》ruby版代码:简单工厂模式的相关文章

大话设计模式读书笔记1——简单工厂模式

最近几日,重温了一下<大话设计模式>这本书,当时读的仓促,有很多没有注意的地方,现在仔细翻看起来,发现这值得细细品味的一本书!! 好东西就要记下来!!! 第一章笔记:从一个简单的计算器程序来看简单工厂模式. 变化的地方就要封装,用一个单独的类来做创造实例的过程这就是工厂. UML图: /// <summary> /// 运算类 /// </summary> public class Operation { public double Number1 { get; set

大话设计模式第八章之简单工厂模式

简单工厂模式 工厂方法模式 package com.dp.factory; interface IFactory { Calculator CreateCalculator(); } class AddFactory implements IFactory { @Override public Calculator CreateCalculator() { return new CalculatorAdd(); } } class SubFactory implements IFactory {

大话设计模式读书笔记--1.简单工厂模式

定义 专门定义一个类来负责创建其他类的实例, 被创建的类通常具有共同的父类. 它又称为静态工厂模式,属于类的创建型模式 模式类图 将对象的创建和对象本身业务处理分离了,可以降低系统的耦合 工厂模式实现 场景:实现一个计算器, 输入a和b, 计算a+b和a-b 下载代码,解压后目录如下图: 优缺点 当增加一个乘法运算时,需要添加乘法类和修改工厂类创建对象的逻辑,它违反了开闭原则 优点:提供专门的工程类创建对象, 降低系统的耦合 缺点: 添加新产品时,需要修改工厂类, 系统扩展困难 使用场景 1.客

大话设计模式第一章之简单工厂模式

package com.dp.simpleFactory; //计算器作为抽象类 定义一个计算需要什么 子类继承了两个数字 并且要有自己的计算实现方法 public abstract class Calculator { protected double numberA=0; protected double numberB=0; public double getNumberA() { return numberA; } public void setNumberA(double number

大话设计模式——第一章:简单工厂模式

#include<iostream> #include<string> #include<exception>//c++标准异常类型的库 using namespace std; bad_exception somethingwrong; //在c++中class默认的继承是private 而struct 默认的继承是public //static 类静态成员函数,即与对象无关,在类中的值不是因实例化某个对象而改变. class operation//运算类(基类) {

大话设计模式第一章---计算器简单工厂模式PHP实现

1 <?php 2 abstract class Operation { 3 private $_numberA = 0; 4 private $_numberB = 0; 5 6 public function __get($number) { 7 if (isset($this->$number)) { 8 return $this->$number; 9 } else { 10 echo "the two number name is '_numberA' and '_n

设计模式(一)——简单工厂模式

嵌入式linux 设计模式(一)--简单工厂模式 一.简单工厂模式简介 1.简单工厂模式 简单工厂模式(Factory Method Pattern)是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例. 简单工厂模式的UML类图 工厂角色(Creator):是简单工厂模式的核心,由它负责创建所有的类的内部逻辑.工厂类必须能够被

设计模式粗浅理解之一------简单工厂模式

设计模式粗浅理解之------简单工厂模式 什么是简单工厂模式 从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现. 角色和职责 工厂(Creator)角色 简单工厂模式的核心,它负责实现创建所有实例的内部逻辑.工厂类可以被外界直接调用,创建所需的产

Java设计模式(一) 简单工厂模式不简单

原创文章,转载请务必将下面这段话置于文章开头处. 本文转发自Jason's Blog,原文链接 http://www.jasongj.com/design_pattern/simple_factory 简单工厂模式使用案例 有一种抽象产品--汽车(Car),同时有多种具体的子类产品,如BenzCar,BMWCar,LandRoverCar.类图如下 作为司机,如果要开其中一种车,比如BenzCar,最直接的做法是直接创建BenzCar的实例,并执行其drive方法,如下 package com.

《大话设计模式》ruby版代码:工厂方法模式

一,先看看简单工厂模式 简单工厂模式的优点:工厂类中包含了必要的逻辑判断,根据客户端的选择动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖. 简单工厂模式的缺点:增加功能的时候,就需要增加case的条件分支,也就是要修改工厂类,违背了“开放-封闭原则”. 2,工厂方法模式: # -*- encoding: utf-8 -*- #运算类 class Operation attr_accessor :number_a,:number_b def initialize(number_a =