Design Patterns 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
Design Patterns 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
Design Patterns 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 GPLv3
开发语言 Swift 查看源码 »
操作系统 OS X
软件类型 开源软件
开源组织
地区 不详
投 递 者 叶秀兰
适用人群 未知
收录时间 2015-02-02

软件简介

Design Patterns 是如何使用常用设计模式及示例。

示例:

class MoneyPile {    let value: Int
    var quantity: Int
    var nextPile: MoneyPile?    init(value: Int, quantity: Int, nextPile: MoneyPile?) {        self.value = value        self.quantity = quantity        self.nextPile = nextPile
    }    func canWithdraw(var v: Int) -> Bool {        func canTakeSomeBill(want: Int) -> Bool {            return (want / self.value) > 0
        }        var q = self.quantity        while canTakeSomeBill(v) {            if (q == 0) {                break
            }

            v -= self.value
            q -= 1
        }        if v == 0 {            return true
        } else if let next = self.nextPile {            return next.canWithdraw(v)
        }        return false
    }
}class ATM {
    private var hundred: MoneyPile
    private var fifty: MoneyPile
    private var twenty: MoneyPile
    private var ten: MoneyPile

    private var startPile: MoneyPile {        return self.hundred
    }    init(hundred: MoneyPile, 
           fifty: MoneyPile, 
          twenty: MoneyPile, 
             ten: MoneyPile) {        self.hundred = hundred        self.fifty = fifty        self.twenty = twenty        self.ten = ten
    }    func canWithdraw(value: Int) -> String {        return "Can withdraw: \(self.startPile.canWithdraw(value))"
    }
}
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
发表了博客
2014/09/15 16:07

Design Principles from Design Patterns

Leading-Edge Java Design Principles from Design Patterns A Conversation with Erich Gamma, Part III by Bill Venners June 6, 2005 Erich Gamma lept onto the software world stage in 1995 as co-author of the best-selling book Design Patterns: Elements of Reusable Object-Oriented Software (Addison-Wesley, 1995) [1]. This landmark work, often referred to as the Gang of Four (GoF) book, cataloged 23 sp...

0
2
发表了博客
2018/08/18 23:05

Design Principles and Design Patterns

设计原则解读。 设计原则是对设计模式的约束性要求,属于设计中基本的四项特征,不符合此四项特征的设计,不具有生命力。 设计模式也是在此四项设计原则上的具体化实例化衍生物。 Martin原文: http://www.cvc.uab.es/shared/teach/a21291/temes/object_oriented_design/materials_adicionals/principles_and_patterns.pdf Architecture and Dependencies 软件最开始的的设计,一般都是完美的,但是往往在软件后续的开发维护过程...

0
0
2018/09/12 11:47

Design patterns, PHP and Magento

Design patterns, PHP and Magento Design Patterns Patterns of Enterprise Application Architecture

0
0
发表了博客
2019/01/13 23:57

【Design Patterns】建造者模式

建造者模式 最近在对项目进行重构工作的时候,发现为了打印规范日志,不断的去new Object()、set(),因为日志规范原因。不同功能模块的记录的日志的某些属性是不一致的,于是就出现了如下类似的情况: LogObject object = new LogObject(); object.set... object.set... object.set... object.set... ... 想到apache的httpclient中HttpClients对象中使用了建造者模式,刚好也时候当前场景。 关于建造者模式的定义如下:...

0
0
发表了博客
2019/01/27 22:24

【Design Patterns】原型模式

原型模式(Prototype Pattern) wiki: 类型: 创建型 何时使用: 当直接创建对象的代价比较大时,则采用这种模式 UML 原型设计模式解决了以下问题: 如何创建对象以便在运行时指定要创建的对象? 如何动态加载类的实例化 原型设计模式描述了如何解决这些问题: 定义一个Prototype返回自身副本的对象。 通过复制Prototype对象创建新对象。 原型模式的注意事项: 使用原型模式复制对象不会调用类的构造方法。 单例模式中,只要将构造...

0
0
发表了博客
2011/12/19 15:29

list of most-frequently-used design patterns

FROM HEAD FIRST DESIGN PATTERNS strategy pattern defines a family of algorithms, encapsulates each one, and makes them interchangeable. Strategy lets the algorithm vary independently from clients that use it. Observer pattern defines a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically. Decorator Pattern attach...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了问答
2020/03/18 21:44

Java继承父类可以支持多态吗?即可以动态指定继承哪一个父类

Java中的多态指可以在运行时动态指定具体子类 如 BaseService - FooService - BarService void setService(BaseService service); 代码运行过程中可以动态指定赋值 FooService 还是 BarService 问: 继承父类可以多态吗 如 BaseSpecificService extends FooService / BarService 代码运行过程中动态指定继承哪一个父类 SpecificFooService extends BaseSpecificService extends FooService SpecificBarService extends BaseSpe...

10
0
发表了问答
2015/04/04 16:42

仰视前人是不好的态度,后人应平视或俯视前人才更好。

不要迷失在前人的模式中,如果要掌握它们,你需要知道它们下面是什么,从两头夹击把问题分解掉。比如在四人帮模式层次相距甚远的两个模式很可能在下一层却是相距很近的。所谓天上一天地上一年,天上人挪动一步很可能就成了地上人的翻山越岭。四人帮可能只有观察出世界的表层规律的能力,他们可能有也可能没有还原出世界的本质的能力,或者他们不还原出世界的本质是想让人膜拜它们。如果他们真的是想让别人膜拜他们的话,他们立即...

4
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
0 评论
4 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部