设计模式-简单工厂(facotry)工厂方法(actorymethod)抽象工厂(abstractfactory).docxVIP

  • 2
  • 0
  • 约4.99千字
  • 约 9页
  • 2017-08-19 发布于重庆
  • 举报

设计模式-简单工厂(facotry)工厂方法(actorymethod)抽象工厂(abstractfactory).docx

设计模式-简单工厂(facotry)工厂方法(actorymethod)抽象工厂(abstractfactory)

设计模式学习之简单工厂(simple facotry)、工厂方法(actory method)、抽象工厂(abstract factory)一.简单工厂(Simple Factory)GOF没有把简单工厂作为设计模式之一列出。但是为了学习后面的两种工厂模式,还是先来了解一下简单工厂。作用:专门由一个类来决定实例化哪个产品类实现要点:可能很多人平时都不知不觉地使用了简单工厂。简单工厂就是把决定实例化哪个类的方法放到一个单独的类(所谓的工厂类)里。UML:代码:abstractclass Product {publicabstractvoid showProduct(); }class ProductA : Product {publicoverridevoid showProduct() { Console.WriteLine(this is productA); } }class ProductB : Product {publicoverridevoid showProduct() { Console.WriteLine(this is productB); } }//factoryclass Factory {public Product getProduct(int type) {if (type == 0) {returnnew ProductA(); }else {returnnew ProductB(); } } }//---------------执行-----------------class Program {staticvoid Main(string[] args) { Factory f = new Factory(); Product p1 = f.getProduct(0); Product p2 = f.getProduct(1); p1.showProduct(); p2.showProduct(); Console.ReadLine(); } }?二.工厂方法(Factory Method)作用:工厂方法是简单工厂的“再抽象”,不在某个类里直接决定实例化哪个产品类,而是把这个决定延迟到它的子类里面。(至于为什么要抽象出父类,参见之前的文章“父类引用指向子类对象”)。实现要点:抽象工厂类,由其子类决定实例化哪个产品类。UML:代码:abstract class Product {publicabstract void showProduct(); } class ProductA : Product {publicoverride void showProduct() { Console.WriteLine(this is productA); } } class ProductB : Product {publicoverride void showProduct() { Console.WriteLine(this is productB); } }//factoryabstract class Factory {public abstract Product getProduct(); } class FacotryA : Factory {public override Product getProduct() {return new ProductA(); } } class FacotryB : Factory {public override Product getProduct() {return new ProductB(); } }//--------------------执行------------------------ class Program {staticvoid Main(string[] args) { Factory[] f = new F

文档评论(0)

1亿VIP精品文档

相关文档