在经历了10个月的过程PHP之后,我现在正试图把我的注意力集中在基本的OOP原则和设计模式上。这是一种爱好,我几乎没有我想要追求的那么多时间,所以请原谅这个问题的低层次。
我的网站(目前100%是程序性的)本质上是一个图书馆。访问者发送库脚本2数据点-一个项目type和项目code。
Library.php使用项目类型来选择一个包含,并且include抓取代码来访问数据库,然后构建页面。
下面是一些例子:
[type] [code]
game RoTo
map 32
unit 216一个示例链接是library.php?type=game&code=RoTo。
一切都很好地运作,但是当我开始使用OOP时,我看到了明显的简单入口点和继承路径来“客观化”这个系统。
class LibraryObject
{
protected $_name;
protected $_description;
}
class Game extends LibraryObject
{
protected $_releaseDate;
etc.
}我也对一些写得很好的课程给我带来的灵活性感到兴奋。
不过,设计模式的想法让我很不爽。这似乎是一种工厂模式,但我对F和AF之间的差异感到困惑。我读过其他问题,所以我专门问这个问题,我在OODesign上读过例子,但我觉得它们是用不同的语言写的,这是相当令人沮丧的。
也许有人能用我自己的数据结构来解释它,这对我来说更有意义吗?
抱歉打扰你了。
发布于 2011-01-18 02:32:24
Factory和抽象工厂之间的区别非常简单。在后者中,工厂本身是抽象的(!)并且不能直接实例化,但必须是子类。
例如,工厂:
class Document {
public function createPage() {
return new Page;
}
}
class LandscapeDocument extends Document {
public function createPage() {
return new LandscapePage;
}
}摘要工厂:
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;
}
}简而言之,Factory模式在工厂类本身中有一个默认的实现。抽象工厂要求所有子类实现它们自己版本的工厂方法。
非那样做不行。
发布于 2015-01-20 11:31:27
以下是另一种可以查看它的方法:
清理灌木丛:
工厂模式就是创造模式。也就是说,它用于创建用于使用的实例。
工厂模式
抽象模式(工厂工厂)
下面的链接将是一个很好的参考,我建议您也阅读Factory方法模式:
http://www.oodesign.com/creational-patterns/
https://stackoverflow.com/questions/4719822
复制相似问题