已经发布了几个关于依赖注入的具体问题的问题,例如何时使用它以及它有哪些框架.然而,
什么是依赖注入以及何时/为什么应该或不应该使用它?
language-agnostic design-patterns dependency-injection terminology
我ThreadLocal
什么时候应该使用变量?
怎么用?
java concurrency multithreading thread-local thread-confinement
荣耀的全球变量 - 成为一个荣耀的全球阶级.有人说打破面向对象的设计.
给我一些场景,除了好的旧记录器,使用单例是有意义的.
我发现这篇文章是关于Lazy
:C#4.0中的懒惰 - 懒惰
使用Lazy对象获得最佳性能的最佳实践是什么?有人能指出我在实际应用中的实际用途吗?换句话说,我什么时候应该使用它?
我正在研究模式和反模式.我对模式有一个清晰的认识,但我没有反模式.网络和维基百科的定义让我很困惑.
任何人都可以用简单的词语向我解释反模式是什么?什么目的?他们在做什么?这是坏事还是好事?
我通过PDO访问我的MySQL数据库.我正在设置对数据库的访问权限,我的第一次尝试是使用以下内容:
我想到的第一件事是global
:
$db = new PDO('mysql:host=127.0.0.1;dbname=toto', 'root', 'pwd');
function some_function() {
global $db;
$db->query('...');
}
Run Code Online (Sandbox Code Playgroud)
这被认为是一种不好的做法.一点点搜索后,我结束了与Singleton模式,其
"适用于需要单个类实例的情况."
根据手册中的示例,我们应该这样做:
class Database {
private static $instance, $db;
private function __construct(){}
static function singleton() {
if(!isset(self::$instance))
self::$instance = new __CLASS__;
return self:$instance;
}
function get() {
if(!isset(self::$db))
self::$db = new PDO('mysql:host=127.0.0.1;dbname=toto', 'user', 'pwd')
return self::$db;
}
}
function some_function() {
$db = Database::singleton();
$db->get()->query('...');
}
some_function();
Run Code Online (Sandbox Code Playgroud)
当我能做到这一点时,为什么我需要相对较大的课程呢?
class Database {
private static $db;
private function __construct(){}
static function get() …
Run Code Online (Sandbox Code Playgroud) 许多人似乎都同意,Singleton模式有许多缺点,有些甚至建议完全避免这种模式.这里有一个很好的讨论.请将有关Singleton模式的任何评论指向该问题.
我的问题:是否有其他设计模式,应该避免或小心使用?
我想将值传递给实现我的服务的类的构造函数.
但是,ServiceHost只允许我传递要创建的类型的名称,而不是传递给其构造函数的参数.
我希望能够传入一个创建我的服务对象的工厂.
到目前为止我发现了什么:
function foo () {
global $var;
// rest of code
}
Run Code Online (Sandbox Code Playgroud)
在我的小PHP项目中,我通常采用程序方式.我通常有一个包含系统配置的变量,当我需要在函数中访问此变量时,我会这样做global $var;
.
这是不好的做法吗?
php ×3
singleton ×3
oop ×2
terminology ×2
.net ×1
c# ×1
concurrency ×1
global ×1
java ×1
ooad ×1
thread-local ×1
wcf ×1