工厂类

简单工厂模式

匿名 (未验证) 提交于 2019-12-03 00:17:01
简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式。 优点 工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息,决定究竟应该创建哪个具体类的对象.通过使用工厂类,外界可以从直接创建具体产品对象的尴尬局面摆脱出来,仅仅需要负责“消费”对象就可以了。而不必管这些对象究竟如何创建及如何组织的.明确了各自的职责和权利,有利于整个 软件体系结构 的优化。 缺点 由于工厂类集中了所有实例的创建逻辑,违反了 高内聚 责任分配原则,将全部创建逻辑集中到了一个工厂类中;它所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了。 当系统中的具体产品类不断增多时候,可能会出现要求工厂类根据不同条件创建不同实例的需求.这种对条件的判断和对具体产品类型的判断交错在一起,很难避免模块功能的蔓延,对系统的维护和扩展非常不利; 这些缺点在 工厂方法模式 中得到了一定的克服。 代码实现 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DesignPattern { class Program { static void Main

设计模式(抽象工厂类)

白昼怎懂夜的黑 提交于 2019-12-03 00:05:21
说的直白一点就是比简单工厂类多了一层封装(可能我的措辞不是很严谨,但是我觉得这是最容易理解的解释了) 将好比两套独立生产的子公司有一个父公司, 子公司的创建还是得父公司拍板儿. 首先根据简单工厂的思路 创建出两个简单工厂: 这里就不详细介绍了 直接上代码 Shape接口 public interface Shape { void draw(); } Square 类 public class Square implements Shape { @Override public void draw() { System.out.println("这是ShapeFactory工厂创建的Square类的方法"); } } Rectangle 类 public class Rectangle implements Shape { @Override public void draw() { System.out.println("这是ShapeFactory工厂创建的Rectangle 类的方法"); } } 工厂类 ShapeFactory public class ShapeFactory { public Shape getShape (String type){ if (type == null){ return null; } if (type.equalsIgnoreCase(

一.简单工厂模式

匿名 (未验证) 提交于 2019-12-03 00:05:01
创建型 模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一 。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例 。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 工厂(Creator)角色 简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。 工厂类 的创建产品类的方法可以被外界直接调用,创建所需的产品对象。 抽象产品(Product)角色 简单工厂模式所创建的所有对象的 父类 ,它负责描述所有实例所共有的 公共接口。 具体产品(Concrete Product)角色 是简单工厂模式的 创建目标 ,所有创建的对象都是充当这个角色的某个具体类的实例。 说起操作系统,市面上大概可以分为三种: Windows操作系统 Linux操作系统 Mac OS操作系统, SayHello() 方法,和用户打招呼,需求来了就得办事,接下来秀出代码。 static void Main(string[] args) { Console.WriteLine("请选择你的操作系统:\r\n"); Console.WriteLine("A.Windows操作系统\r\n"); Console.WriteLine("B.Linux操作系统\r\n"); Console.WriteLine("C.Mac

利用多态特性,创建一个手机类Phones,定义打电话的方式call,创建三个子类,并在各自的方法中重写方法,编写程序入口main()方法,实现多种手机打电话

匿名 (未验证) 提交于 2019-12-02 23:49:02
|--需求说明 利用多态特性,创建一个手机类Phones,定义打电话的方式call,创建三个子类,并在各自的方法中重写方法,编写程序入口main()方法,实现两种手机打电话 |--解题思路 采用简单工厂模式, 设计四个角色: 工厂类、抽象产品类、具体产品类 由一个工厂类,根据客户传入的参数来决定创建/生产哪一种具体产品。 |--代码内容 1 //这个Phones类是一个抽象类 2 public abstract class Phones { 3 //定义一个抽象方法,call,用来被不同的类继承 4 public abstract void call(); 5 } 抽象产品类---Phones 1 public class IPone extends Phones{ 2 //重写父类的call方法,用来实现具体的苹果手机打电话 3 @Override 4 public void call() { 5 System.out.println("苹果手机打电话"); 6 } 7 } 具体产品类----Iphone 1 public class APhone extends Phones { 2 //重写父类的call方法,用来实现具体的安卓手机打电话 3 @Override 4 public void call() { 5 System.out.println("安卓手机打电话"); 6

设计模式:抽象工厂模式,结合类图秒懂!

匿名 (未验证) 提交于 2019-12-02 23:47:01
通过前篇文章 《设计模式:工厂模式,解除耦合的利器》 的介绍,我们对工厂模式有了深入的了解,今天继续介绍一种特殊的工厂模式,也就是抽象工厂模式。 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式,是工厂方法模式的升级版,在有多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方式。 抽象工厂模式包含了几个角色: AbstractFactory:用于声明生成抽象产品的方法 ConcreteFactory:实现了抽象工厂声明的生成抽象产品的方法,生成一组具体产品,这些产品构成了一个产品族,每一个产品都位于某个产品等级结构中; AbstractProduct:为每种产品声明接口,在抽象产品中定义了产品的抽象业务方法; Product:定义具体工厂生产的具体产品对象,实现抽象产品接口中定义的业务方法。 这是它的通用类图: 其中 AbstractProductA 和 AbstractProductB 就是两个产品族的抽象类 (或者接口),而 Product1 和 Product2 就是产品族下的具体产品类,AbstractCreator 就是工厂的抽象。 我们可以用操作系统来举例,现在市面上用的最多的两种PC端操作系统是windows和Linux,两个系统都有共同类型的组件,如文件夹,按钮

简单工厂模式

匿名 (未验证) 提交于 2019-12-02 23:39:01
  简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。   简单工厂就是将多个if,else...代码块拆开,增加代码的可阅读性、便于后期的维护。一个接口,几个实现接口的类,再通过传参的形式在工厂类中根据类型去创建相应的具体类。 其结构如下图:   以最简单的加减乘除运算为例,建立一个通用的运算接口,其有两个抽象方法:一个是描述运算类型,另一个是具体的运算。UML类图如下: 对应的代码如下: package cn.qlq; public interface Operation { String operateType(); Number operate(Number... nums); } package cn.qlq; public class OperationAdd implements Operation { @Override public String operateType() { return "OperationAdd"; } @Override public Number operate(Number... nums) { Number result = 0; for (Number number : nums) { result = result

设计模式-三种工厂模式-(附Java源码)

匿名 (未验证) 提交于 2019-12-02 21:53:52
建议结合示例源码理解 简单工厂模式(Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态(static)方法,因此简单工厂模式又被称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式 简单工厂模式的要点在于:当你需要什么,只需要传入一个参数,就可以获取你所需要的对象,而无须知道其创建细节 主要优点: 客户端免除直接创建对象,实现对象创建于使用的分离 客户端无需知道具体产品类的类名,只需要知道对应的参数即可 通过引入配置文件,可以在不修改客户端代码的情况下更换新的产品类 主要缺点: 由于产品类中集中了所有产品的创建逻辑,职责过重,一旦不能正常工作,整个系统都要收到影响 增加系统中类的个数,增加了系统的复杂度 系统拓展困难,一旦有新产品就不得不修改工厂逻辑,不利于拓展与维护 使用场景: 工厂类负责创建的对象比较少, 客户端只知道传入工厂类的参数,对于如何创建对象不关心 简单工厂模式最大的缺点是当有新产品要加入到系统中时,必须修改工厂类,需要在其中加入必要的业务逻辑,这违背了“开闭原则” 。 在工厂方法中,我们不在提供统一的工厂类来创建所有的产品对象,而是针对不同的产品提供不同的工厂, 一个用于创建对象的接口

工厂模式

我是研究僧i 提交于 2019-12-02 16:47:06
  工厂模式:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。工厂模式属于创建型模式,其主要解决的是计划在 不同条件下创建不同实例 时接口选择的问题。 实现:   1、创建接口 1 class IShape 2 { 3 public: 4 virtual void draw() = 0; 5 virtual ~IShape() {}; 6 };   2、创建接口实体类 1 class Rectangle :public IShape 2 { 3 virtual void draw(); 4 }; 5 6 class Square : public IShape 7 { 8 virtual void draw(); 9 }; 10 11 void Rectangle::draw() 12 { 13 cout << "this is Rectangle" << endl; 14 } 15 16 void Square::draw() 17 { 18 cout << "this is Square" << endl; 19 }   3、创建工厂类接口 1 class IShapeFactory 2 { 3 public: 4 virtual IShape* createShape() = 0; 5 virtual

设计模式_1 工厂模式

懵懂的女人 提交于 2019-12-02 12:48:31
工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象 介绍 意图: 定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。 主要解决: 主要解决接口选择的问题。 何时使用: 我们明确地计划不同条件下创建不同实例时。 如何解决: 让其子类实现工厂接口,返回的也是一个抽象的产品。 关键代码: 创建过程在其子类执行。 应用实例: 1、您需要一辆汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里面的具体实现。 2、Hibernate 换数据库只需换方言和驱动就可以。 优点: 1、一个调用者想创建一个对象,只要知道其名称就可以了。 2、扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。 3、屏蔽产品的具体实现,调用者只关心产品的接口。 缺点: 每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。这并不是什么好事。 使用场景: 1、日志记录器:记录可能记录到本地硬盘、系统事件、远程服务器等,用户可以选择记录日志到什么地方。

设计模式

本小妞迷上赌 提交于 2019-12-02 06:19:48
设计模式 设计模式的简单理解 一、设计模式概念概述 1、设计模式的诞生 2、设计模式的定义以及分类 设计模式的定义 设计模式的基本要素 设计模式的分类 3、GoF设计模式简介设计模式的优点 二、设计模式面向对象定义原则 原则概述 单一职责原则 开闭原则 里氏代换原则 依赖倒转原则 接口隔离原则 合成复用原则 迪米特原则 三、工厂方法模式 1、工厂方法模式结构与实现 2、工厂模式应用实例 3、工厂方法的重载 4、工厂方法的隐匿 5、工厂方法模式的优缺点与适用环境 四、抽象工厂模式 1、抽象工厂模式结构与实现 2、抽象工厂模式应用实例 3、开闭原则的倾斜性 4、抽象工厂模式优缺点与适用环境 五、单例模式 单例模式结构与实现 单例模式应用实例 饿汉式单例与懒汉式单例 单例模式优缺点与适用环境 六、适配器模式 适配器模式结构与实现 适配器模式应用实例 适配器模式优缺点和适用环境 七、桥接模式 桥接模式结构与实例 桥接模式应用实例 桥接模式与适配器模式的联用 桥接模式优缺点与适用环境 八、组合模式 组合模式结构与实现 组合模式应用实例 透明组合模式与安全组合模式 组合模式优缺点和适用环境 九、装饰模式 装饰模式结构与实现 装饰模式应用实例 装饰模式优缺点与适用环境 十、观察者模式 观察者模式结构与实现 观察者模式应用实例 设计模式的简单理解 一、设计模式概念概述 1、设计模式的诞生 A