Dre*_*rew 14 php oop design-patterns factory factory-pattern
在大约10个月的程序化PHP之后,我现在试图围绕基本的OOP原则和设计模式.这是一个爱好,我没有和我追求的那么多时间,所以请原谅这个问题的相当低级别.
我的网站(目前100%程序)是一个图书馆的核心.访问者发送库脚本2数据点 - 项目type和项目code.
Library.php 使用项类型来选择包含,include包括抓取代码以访问数据库然后构建页面.
一些例子:
[type] [code]
game RoTo
map 32
unit 216
Run Code Online (Sandbox Code Playgroud)
一个示例链接将是 library.php?type=game&code=RoTo
一切都很好,但是当我开始使用OOP时,我看到了明显的简单入口点和继承路径,用于"客观化"这个系统.
class LibraryObject
{
protected $_name;
protected $_description;
}
class Game extends LibraryObject
{
protected $_releaseDate;
etc.
}
Run Code Online (Sandbox Code Playgroud)
我也对一些写得很好的课程给我的灵活性感到兴奋.
不过,设计模式的想法让我感到沮丧.它看起来像一个工厂模式,但我对F和AF之间的差异感到困惑.我已经阅读了其他特别提出问题的SO问题,并且我已经阅读了OODesign上的示例,但我觉得它们是用不同的语言编写的,而且相当令人沮丧.
也许如果有人能用我自己的数据结构来解释它,那对我来说会更有意义吗?
抱歉,添麻烦了.
net*_*der 34
Factory和Abstract Factory之间的区别非常简单.在后者中,工厂本身是抽象的(!)并且不能直接实例化,但必须是子类.
每个例子,工厂:
class Document {
public function createPage() {
return new Page;
}
}
class LandscapeDocument extends Document {
public function createPage() {
return new LandscapePage;
}
}
Run Code Online (Sandbox Code Playgroud)
在抽象工厂:
abstract class Document {
abstract public function createPage();
}
class PortraitDocument extends Document {
public function createPage() {
return new PortraitPage;
}
}
class LandscapeDocument extends Document {
public function createPage() {
return new LandscapePage;
}
}
Run Code Online (Sandbox Code Playgroud)
简而言之,Factory模式在工厂类本身中具有默认实现.抽象工厂要求所有子类实现自己的工厂方法版本.
这里的所有都是它的.