- 博客(14)
- 收藏
- 关注
原创 Java_HashSet
Java基础教程理论基础入门示例进入正题理论基础HashMap,哈希表,存储键值对,不同的键可以存储相同的值。HashSet,在HashMap基础上改造而来,不允许存储相同的值。Set, 顾名思义,集合的意思。入门示例产品小白说客户端要加个新接口让我支持下,客户端传2个字符串给我,我再调用研发黑哥的引擎服务,把结果吐给用户。黑哥发话了:你别给我弄一坨字符串,看着就烦,我只接收1个HashSet类型的变量。没办法,我得搞一个转换方法,把2个字符串传进去,然后返回一个保存String元素的Hash
2021-08-03 12:19:52 133
原创 组合模式
组合模式,别名合成模式。当对象或系统出现部分与整体的层次结构,类似于树状关系时,可以考虑用组合模式。举个栗子:<?phpabstract class Organization { protected $name; protected $child; public function __construct($name) { $this->name = $name; }
2017-04-10 19:58:48 197
原创 建造者模式
建造者模式,先来看下定义:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。简单地说,需要创建的对象都有自己的功能,但是创建方式是一样的,那么可以用建造者类来负责功能对象的创建。类图如下:Builder模式中主要角色抽象建造者(Builder)角色:定义抽象接口,规范产品各个部分的建造,必须包括建造方法和返回方法。具体建造者(Concre
2017-04-03 17:17:54 182
原创 模板方法模式
模板方法模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。相当于在父类中定义了操作规则,子类都按照这个规则去处理自己的业务。比如,项目需要异步处理,从消息队列里获取数据后进行更新操作,那是不是总结起来就是获取数据和更新数据。<?phpabstract class Base { public function execute() { $data = $this->expor
2017-04-01 17:08:42 199
原创 原型模式
通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例。PHP需要注意深浅复制问题。PHP对于对象属性默认是浅复制。举个栗子,网站上下载电子书。电子书好比是一个对象,大家需要阅读只需下载下来(复制)即可,不需要重复去生成电子书,很方便。此处应该有UML图,时间关系,后期补上...<?phpinterface website{ public function copy();
2017-03-31 16:38:24 184
原创 代理模式
代理模式,提供一种代理以控制对这个对象的访问。代理类成为实际调用对象的中间件,可以控制对实际调用对象的访问权限。比如支付宝代交水电费,滴滴软件代叫出租车。<?phpinterface go{ public function takeCar();}class BeijingTaxi implements go{ public function drive(
2017-03-31 15:05:40 218
原创 装饰者模式
装饰者模式可以动态的给一个对象添加一些额外的职责,非常灵活进行组合。装饰者模式也可以解决继承依赖的难题,比如在一个项目中,反复使用继承会造成层级结构太大,有很多父类的属性和方法根本用不上,后期需求改动,想修改也难于上青天。这时候可以使用装饰者模式。不过装饰者模式会造成过多子类的问题。
2017-03-30 19:35:02 181
原创 观察者模式
观察者模式,它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。当具体主题的内部状态改变时,给所有登记过的观察者发出通知。观察者也称为发布-订阅(Publish-Subscribe)模式代码如下:<?phpinterface Subject{ public function attach($params); public
2017-03-21 07:22:28 239
原创 策略模式
策略模式,定义若干策略类,客户端根据具体需求去使用相应的策略类。使用场景如不同类型商品的打折力度、不同级别会员的优惠幅度、员工奖金等。上代码:<?phpinterface Pay{ public function payMoney();}class WxPay implements Pay{ public function payMoney() { echo 'Use
2017-03-20 12:41:58 183
原创 单例模式
单例模式,一个类只被实例化一次。类中用静态属性和静态方法去判断唯一性,要注意clone的问题。Java中还要注意多线程同时实例化对象的坑,Php基本不存在这个问题,就不予考虑了。不过可以通过以下两个方案解决:1. 急切创建实例。静态属性直接赋值单例对象,这样类调用时已经存在了对象。2. 锁机制。实例化对象时加锁,完成后解锁。多线程中不会出现生成两个对象的坑了。上代码:<?p
2017-03-19 23:42:02 179
原创 工厂方法
相比简单工厂模式,做了进一步的抽象为接口或抽象类,给所有的功能类添加了对应的工厂类,一 一在工厂类中实例对应的功能类,遵循了开放封闭原则(对扩展开放,对修改封闭)上代码:<?phpinterface People{ public function work();}class Teacher implements People{ public function work() {
2017-03-19 22:44:31 233
原创 简单工厂模式
简单工厂模式,严格来说不属于设计模式,更像一种编码风格。通过在工厂类中进行判断,一般通过if-elseif 或者 switch,然后创建需要的功能类。上代码:<?phpinterface People { public function work();}class Teacher implements People{ public function work() {
2017-03-19 22:15:15 182
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人