Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions 03-02_dan_li.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@

###PHP写法

```
``` php
<?php
namespace Banyar;
class Singleton
Expand Down Expand Up @@ -82,7 +82,7 @@ class Singleton
####多数实际的应用场景会是抽象工厂和单例的结合使用,TP是用的创建单例的公共方法,


```
``` php
<?php

abstract class FactoryAbstract {
Expand Down Expand Up @@ -144,7 +144,7 @@ print_r(SecondProduct::getInstance()->a);

#####Thinkphp common文件的functions.php中获取单例的方法

```
``` php
/**
* 取得对象实例 支持调用类的静态方法
* @param string $name 类名
Expand Down Expand Up @@ -179,7 +179,7 @@ function get_instance_of($name, $method='', $args=array()) {

单例怎么解决线程的 不安全呢?
@synchronized 来创建互斥锁即可
```
``` c

/*********
1.常规写法
Expand Down Expand Up @@ -238,7 +238,7 @@ function get_instance_of($name, $method='', $args=array()) {
}
@end
```
```
``` c
/*********
宏作用:单例生成宏
使用方法:http://blog.csdn.net/totogo2010/article/details/8373642
Expand All @@ -259,15 +259,15 @@ return shared##className; \
}
```
.h
```
``` c
#import "testSingleton.h"

@implementation testSingleton
DEFINE_SINGLETON_FOR_CLASS(testSingleton)
@end
```
.m
```
``` c
#import <Foundation/Foundation.h>
@interface testSingleton : NSObject
DEFINE_SINGLETON_FOR_HEADER(testSingleton);
Expand Down
23 changes: 12 additions & 11 deletions SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,24 +92,24 @@

## 设计模式

* 为什么有设计模式
* 对象创建
* [为什么有设计模式](.md)
* [对象创建](.md)
* [工厂&抽象工厂](gong_538226_chou_xiang_gong_chang.md)
* [单例](03-02_dan_li.md)
* [原型](yuan_xing.md)
* [注册树模式](01_zhu_ce_shu_mo_shi.md)
* [生成器](sheng_cheng_qi.md)
* 接口适配
* 适配器
* 桥接
* 外观
* [适配器](.md)
* [桥接](.md)
* [外观](.md)
* 对象解耦
* [观察者模式](guan_cha_zhe_mo_shi.md)
* [钩子Hook模式](04_gou_zi_hook_mo_shi.md)
* [数据对象映射模式](03_shu_ju_dui_xiang_ying_she_mo_shi_ff0d_orm.md)
* 抽象集合
* 组合
* 迭代器
* [组合](.md)
* [迭代器](.md)
* 行为扩展
* 访问者
* 装饰器
Expand All @@ -119,15 +119,15 @@
* [策略模式](01_ce_lve_mo_shi.md)
* 命令
* 性能与对象访问
* 享元
* 代理
* [享元](yuan.md)
* [代理](.md)
* 对象状态
* 备忘录

## 重构&代码整洁

* 重构
* 代码整洁
* [重构 ](.md)
* [代码整洁](.md)
* [开始CodeReview](kai_shi_codereview.md)
* [为什么codeReview](wei_shi_yao_codereview.md)

Expand All @@ -146,6 +146,7 @@
* [Docker](docker.md)
* [Docker常用命令](dockerchang_yong_ming_ling.md)
* [文件回滚备份](wen_jian_hui_gun_bei_fen.md)
* [Monit](monit.md)
* 优化
* [配置选型](pei_zhi_xuan_xing.md)
* 服务端架构
Expand Down
1 change: 1 addition & 0 deletions _config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
theme: jekyll-theme-cayman
8 changes: 5 additions & 3 deletions gong_538226_chou_xiang_gong_chang.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@


#####工厂实例01
```
``` php
<?php

interface Factory {
Expand Down Expand Up @@ -63,7 +63,7 @@ print_r($secondProduct->getName());
```
####工厂实例02
对于某个变量的延迟初始化也是常常被用到的,对于一个类而言往往并不知道它的哪个功能会被用到,而部分功能往往是仅仅被需要使用一次。通过实体变量来实现使用的时候加载对应的对象。
```
``` php
<?php

interface Product {
Expand Down Expand Up @@ -113,8 +113,10 @@ print_r($factory->getFirstProduct()->getName());
// The first product
```
#####抽象工厂
```
在很多情况下,需要为系统中的多个类创建单例的构造方式,这样,可以建立一个通用的抽象父工厂方法:

``` php

<?php

abstract class FactoryAbstract {
Expand Down
Loading