一.抽象工厂定义 上一讲我们说了一下工厂方法,那么我们如何对工厂进行抽象. 因为工厂是生产产品的,现在我们需要工厂抽象,只生产抽象产品,不生产具体的产品,这同时也体现了java的多态. 现在有2个抽象,一个是抽象工厂,另一个是抽象产品. 下面介绍抽象产品到具体产品: 产品的具体实现可以有多种方式,可以有抽象类去实现抽象产品中共有的方法,另一部分交给子类实现,这样,我们就可以把产品一些公有的属性抽象出来,一些 特有的属性由子类根据自身条件实现,这样就可以有同种功能,不同型号的产品. 下面介绍抽象工…
在说工厂方法模式之前,先了解一下简单工厂模式.工厂方法模式其实是在简单工厂上面做了一些增强. 简单工厂模式:有一个专门的类来生产其他类的实例,生产的这些实例有一个共同父类.这个跟我们的多态有一点像. 例子: 假如我们有一个鼠标工厂,这个工厂既可以生产联想鼠标,又可以生产宏碁鼠标. 代码如下: 1.鼠标工厂(可以生产联想鼠标和宏碁鼠标) public class MouseFactory { /** * 生产一个鼠标 * @param i * @return */ public Mouse cre…
1.抽象工厂方法模式:为了创建一组或相互依赖的对象提供一个接口,而不需要指定它们是具体类……无语 2.找个代码看看: 抽象工厂类<成员为接口> /** * 抽象工厂 * */ public abstract class Factory { public abstract A CreateA(); public abstract B CreateB(); } 接口A public interface A { void aa(); } 接口B public interface B { void b…
本文介绍了工厂方法模式的概念,优缺点,实现方式,UML类图,并介绍了工厂方法(未)遵循的OOP原则 原创文章.同步自作者个人博客 http://www.jasongj.com/design_pattern/factory_method/ 工厂方法模式解决的问题 上文<简单工厂模式不简单>中提到,简单工厂模式有如下缺点,而工厂方法模式可以解决这些问题 由于工厂类集中了所有实例的创建逻辑,这就直接导致一旦这个工厂出了问题,所有的客户端都会受到牵连. 由于简单工厂模式的产品是基于一个共同的抽象类或者…
一.工厂模式 1.定义统一的接口,并在接口中定义要实现的抽象方法. 2.创建接口的具体实现类,并实现抽象方法. 3.创建一个工厂类,根据传递的参数,生成具体的实现类对象,执行具体的方法. 优点: 1.一个调用者想创建一个对象,只要知道其名称就可以了. 2.扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以. 3.屏蔽产品的具体实现,调用者只关心产品的接口. 缺点:每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系…
工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类.Factory Method使一个类的实例化延迟到其子类. 构成: 1.Product工厂方法创建的对象的接口 2.ConcreteProduct具体的产品,实现Product接口 3.Creator声明工厂方法,返回Product 4.ConcreteCreator实现/重写Creator的工厂方法,返回ConcreteProduct实例 UML类图: 实现 要生产的产品都实现一个接口 interface Product {…
定义 抽象工厂类为创建一组相关和相互依赖的对象提供一组接口,而无需指定一个具体的类. ​ 这里我得把工厂方法模式得定义拿出来做一下比较:定义一个创建对象的接口,由子类决定实例化哪一个类.工厂方法是一个类的实例化延迟到其子类.这里强调一下,工厂方法包括:简单工厂模式,和工厂方法模式等一些系列的工厂方法模式的变形. 案例 ​ 现在有两个产品,一个是手机,一个是电脑.手机和电脑都是不同的生产商生产的.我们要实现一个工厂管理系统,记录华为和苹果着两家工厂生产的手机和电脑信息. ​ 已知,华为和苹果都有自…
前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 1. 简介 上一篇博客介绍了简单工厂模式,简单工厂模式存在一个很严重的问题: 就是当系统需要引入新产品时,由于静态工厂方法通过所传入参数的不同来创建不同的产品,这必定要修改工厂类的源代码,这将违背"开闭原则". 本篇将要介绍的工厂方法模式可以规避这个缺点. 2. 工厂方法模式 工厂方法模式又简称为工厂模式,又可称作虚拟构造器模式或多态工厂模式.工厂方法模式是一种创建型模式. 2.1…
工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象. 意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行. 主要解决:主要解决接口选择的问题. 何时使用:我们明确地计划不同条件下创建不同实例时. 如何解决:让其子类实现工厂接口,返回的也是一个抽象的产…
简单工厂,代码: public interface ISpeak { public void Say(); } public class Hello : ISpeak { public void Say() { //throw new NotImplementedException(); Console.WriteLine("Hello"); } } public class Bye : ISpeak { public void Say() { Console.WriteLine(&q…