了解 工厂模式,工厂方法或者类生成对象,而不是在代码中直接new。 使用工厂模式,可以避免当改变某个类的名字或者方法之后,在调用这个类的所有的代码中都修改它的名字或者参数,只需要在工厂类里修改需要new的类名即可。如果我们不使用工厂方式实例化这些类,则需要每一个类都需要new一遍,过程不可控,类多了
原创
2021-05-27 11:25:34
354阅读
声明:这一系列的博客引用《大话设计模式》。程洁作者。
迭代器模式:迭代器模式是遍历集合的成熟模式。迭代器模式的关键是将遍历集合的任务交给一个叫做迭代器的对象,它的工作时遍历并选择序列中的对象,而client程序猿不必知道或关心该集合序列底层的结构。
UML类图:
角色:
Iterator(迭代器
转载
2015-10-14 20:10:00
178阅读
2评论
声明:本系列博客参考资料《大话设计模式》,作者程杰。 代理模式为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 UML类图: 角色介绍: 抽象主题角色(IGiveGift):定义了Followe
转载
2016-06-12 10:43:00
89阅读
2评论
: http://coderschool.cn/1521.html 这一篇也讲得不错!! http://www..com/wangtao_20/p/3594192.html http://www..com/hongfei/archive/2012/07/07/2580
转载
2017-05-06 15:06:00
89阅读
2评论
个人理解工厂类相当于平时用的基类,只需要把类new一次然后付给一个变量,以后直接引入基类调用变量使用类里的方法即可 了解 工厂模式,工厂方法或者类生成对象,而不是在代码中直接new。 使用工厂模式,可以避免当改变某个类的名字或者方法之后,在调用这个类的所有的代码中都修改它的名字或者参数,只需要在工厂
原创
2021-05-26 18:24:45
295阅读
定义:外观模式(Facade):又叫门面模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 代码实例:假设实现一个功能需要用到子系统中的四个方法。/**
* Class SubSystemOne */class SubSystemOne
{ public function methodOne()
{ retu
转载
2021-04-29 21:18:51
176阅读
2评论
定义:策略模式(Strategy):它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。 结构:Strategy(策略类):定义所有支持的算法的公共接口。ConcreteStrategy(具体策略类):封装了具体的算法或行为,继承于Strategy。Context:Context上下文,用一个ConcreteStrategy来配置,维护一个对St
转载
2021-04-29 21:19:13
151阅读
2评论
定义:组合模式(Composite):将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。当你发现需求中是体现部分与整体层次的结构时,以及你希望用户可以忽略组合对象与单个对象的不同,统一的使用组合结构中的所有对象时,就应该考虑用组合模式了。 实现方式:1、透明方式:叶节点和枝节点对于外界没有什么区别,它们具备完全一致的行为接口,问题则是叶节点
转载
2021-04-29 21:24:45
164阅读
2评论
需求:想实现这样一个功能:
开展一个网站邀请活动,然后参与者将推广的网站地址链接发给好友,好友点击链接后在网站注册成功,的邀请日志记录条数加1
这样我们实现了
主体(Activity)、
策略(AbstractActivityStrategy -> DEFAULTActivityStrategy)、
行为(ActivityLog、ActivityLogAmount)的分离。
原创
2013-09-01 19:25:26
901阅读
概述策略模式属于对象的行为模式。其用意是针对一组算法,将每个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化 UML图 策略模式中主要角色 这个模式设计到三个角色: 环境角色(Context):持有一个Strategy的引用抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体的策略类所需的接口具体策略(ConcreateStrategy)角色:包装了相关的算法或行为 使用场景 假设现在要设计一个购物车系统,一个最简单的情况...
转载
2013-06-25 20:31:00
113阅读
2评论
声明:本系列博客參考资料《大话设计模式》,作者程杰。 状态模式当一个对象的内在状态改变时同意改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的推断逻辑转移到表示不同状态的一系列类中,能够把复杂的推断逻辑简化。 UML类图: 角色:
转载
2017-04-24 14:17:00
161阅读
2评论
一、问题 模拟不同课程有不同的收费方式,并且能灵活改变(新增或删减),如讲座可以固定收费也可改为按时收费,研讨会也是。二、模式简介及关键点1.在父类代码中使用条件语句是一种退倒,可以用多态来代替条件语句。条件语句有时被称作实现了一个“模拟继承”2.策略模式适用于将一组算法移入到一个独立的类型中。如...
转载
2015-12-06 00:53:00
109阅读
2评论
工厂模式主要作用提供统一的接口,并且将类分为工厂类和工具类以工厂类作为统一接口调用各工具类,工厂类的函数是静态函数,且应用了可变类<?php//腾讯类--工具类class Tecent { public function show() { echo "腾讯类实例化了"; }}//百度类--工具类class Baidu { public fu
原创
2023-03-17 15:51:29
69阅读
Factory.php<?phpclass Factory { static function createDatabase() { $db=new Factory(); return $db; }}var_dump(Factory::createDatabase());核心在于:如果多个文件都创建这个factory对象的话,那如果不用这个工厂模式,会修改很多次,用了工厂模式后,只修改这个文件一次即可....
原创
2021-12-31 10:51:07
58阅读
组合模式应用于递归结构的优化或分层数据结构的管理:<?phpabstract class Compary{protected $name;/* public function __construct($name){$this->name=$name;} */abstract public function Add(Compary $compary);abstra
原创
2015-08-28 08:39:06
339阅读
策略模式:就是把算法和对象分离开,使算法可以独立改变,而调用它的客户(环境类)不用做相应的改变的开发模式。<?php/*//策略模式的组成:1.环境类,一个私有成员,一个私有成员赋值方法,该方法有一个形式参数,参数的类型是策略的实体类,函数体用该参数来确定具体调用那个具体实体策略类的方法,这样不同实体类调用不同的算法,就实现了对象和算法的分离。2.一个抽象的策略类,在抽象类中实现
原创
2015-08-28 14:55:25
563阅读