设计模式之工厂模式-简单工厂(02)

author author     2022-08-24     624

关键词:

设计模式分创建型、行为型、结构型;

工厂模式属于创建型模式,分(1)简单工厂(静态工厂)(2)工厂方法(3)抽象工厂,下面分别通过代码来介绍(本篇文章北风网的视频看后写的);

(一)简单工厂

  简单工厂描述:通过专门定义的一个类来创建其他类的实例,被创建的实例通常都具有共同的父类;

  简单工厂的角色及其职责:(1)工厂角色[creator]:该模式的核心,负责创建所有实例的内部逻辑,工厂类可以被外界直接调用,创建所需要的产品实例(2)抽象角色[Product]:简单工厂模式 所创建的所有对象的父类,它负责描述所有实例所共有的公共接口(3)具体产品角色[Concrete Product]:创建出来的具体实例;

  下面是个代码例子:

  (1)工厂角色类

技术分享
 1 package com.sb.factory.simple;
 2 
 3 //工厂角色类
 4 //获得学生的工厂
 5 public class StudentFactory {
 6     
 7     //获得学生的方法,这个方法也可以写成静态的
 8     public Student getStudent(String collegeName){
 9         
10         if("北大".equals(collegeName)){
11             return new PekingUStudent();
12         }else if("清华".equals(collegeName)){
13             return new TsinghuaUStudent();
14         }else if("复旦".equals(collegeName)){
15             return new FudanUStudent();
16         }else{
17             System.out.println("其他的学校的学生");
18             return null;
19         }
20     }
21     
22 }
View Code

  (2)抽象角色(接口)

技术分享
1 package com.sb.factory.simple;
2 
3 //学生接口
4 //抽象角色
5 public interface Student {
6     //显示校训
7     void showXiaoXun();
8 }    
View Code

  (3)具体产品角色类(3个学校的学生)

    3.1  北大的学生

技术分享
 1 package com.sb.factory.simple;
 2 
 3 //北京大学(Peking University),北大的
 4 public class PekingUStudent implements Student{
 5     
 6     //北大校训
 7     public void showXiaoXun(){
 8         System.out.println("爱国、进步、民主、科学");
 9     }
10     
11     
12 }
View Code

    3.2  清华的学生

技术分享
 1 package com.sb.factory.simple;
 2 
 3 //清华大学(Tsinghua University),清华的
 4 public class TsinghuaUStudent implements Student{
 5     
 6     //清华校训
 7     public void showXiaoXun(){
 8         System.out.println("自强不息,厚德载物 ");
 9     }
10 
11 }
View Code

     3.2  复旦的学生

技术分享
 1 package com.sb.factory.simple;
 2 
 3 //复旦大学(Fudan University),复旦的
 4 public class FudanUStudent implements Student {
 5     
 6     //复旦校训
 7     public void showXiaoXun(){
 8         System.out.println("博学而笃志,切问而近思 ");
 9     }
10     
11 }
View Code

  (4)测试代码

技术分享
 1 package com.sb.factory.simple;
 2 
 3 public class Test {
 4     
 5     public static void main(String[] args) {
 6         
 7         //1.要想获得个的学生,得先造个工厂,从学生工厂里拿学生
 8         StudentFactory stuFactory = new StudentFactory();
 9         //2.学生工厂建成了,就可以去工厂里拿学生了(就像校园招聘一样)
10         //先招一个北大的
11         Student pekingStudent = stuFactory.getStudent("北大");
12         //调用方法,(考考他北大校训是啥啊,校训都答不上来,你上的是假北大吧)
13         pekingStudent.showXiaoXun();
14         
15         //同样获得复旦、清华的学生
16         Student tsinghuaStudent=stuFactory.getStudent("清华");
17         tsinghuaStudent.showXiaoXun();
18         
19         Student FudanStudent = stuFactory.getStudent("复旦");
20         FudanStudent.showXiaoXun();
21         
22         //这个学校,没有具体的实例,所以报错了(java.lang.NullPointerException)
23         Student beiniaoStudent = stuFactory.getStudent("北大青鸟");
24         beiniaoStudent.showXiaoXun();
25         
26     }
27     
28 }    
View Code

   测试结果:

技术分享

  最后一个由于没有具体实例,就报了空指针异常

    简单工厂的优点:逻辑判断放在了整个工厂类中,用户在使用时,根据外界给定的条件,或得到所要的对象,不需要了解对象是怎么创建以及如何组织的;

  缺点:违背了“开放,闭合”原则(对扩展是开放的,而对修改是封闭的),增加一个具体角色的实例,就得修改工厂里的逻辑判断,扩展性不好;

设计模式之简单工厂模式

简单工厂模式:简单工厂模式(SimpleFactoryPattern):又称为静态工厂方法(StaticFactoryMethod)模式,它属于类创建型模式(同属于创建型模式的还有工厂方法模式,抽象工厂模式,单例模式,建造者模式)。在简单工厂模式中,可以根... 查看详情

02简单工厂模式

简单工厂模式:从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(StaticFactoryMethod)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工... 查看详情

设计模式之简单工厂模式

...所以工厂就是一个能够产出其他类型的对象的类。工厂类设计模式主要有三种,即简单工厂模式、工厂模式和抽象工厂模式。简单工厂模式简单工厂模式是指专门定义一个工厂类来负责创建产品类的实例,被创建的产品通常都有... 查看详情

工厂模式之简单工厂模式

  简单工厂模式(静态工厂方法模式)就是由一个工厂类根据传入的参量决定创建出哪一种产品类的实例。其结构如下图所示:          简单工厂模式涉及到工厂角色、抽象产品角色和具体产品角色。   &nb... 查看详情

设计模式之工厂方法模式

一、引言  在简单工厂模式中讲到简单工厂模式的缺点,有一点是——简单工厂模式系统难以扩展,一旦添加新产品就不得不修改简单工厂方法,这样就会造成简单工厂的实现逻辑过于复杂,工厂方法模式可以解决简单工厂模... 查看详情

设计模式之简单工厂模式(代码片段)

简单来说,工厂模式就是按照需求来返回一个类型的对象,使用工厂模式的意义就是,如果对象的实例化与代码依赖太大的话,不方便进行扩展和维护,使用工厂的目的就是使对象的实例化与主程序代码就行解耦.1.简单工厂模式简介简... 查看详情

简单工厂模式的强大之处

工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类。工厂模式有以下几种形态:简单工厂(SimpleFactory)模式工厂方法(FactoryMethod)模式抽象工厂(A... 查看详情

设计模式从青铜到王者第五篇:创建型模式之简单工厂模式(simplefactorypattern)(代码片段)

系列文章目录文章目录系列文章目录前言一、简单工厂模式模式动机二、简单工厂模式模式定义三、简单工厂模式模式结构四、简单工厂模式时序图五、简单工厂模式代码分析六、简单工厂模式模式分析七、简单工厂模式优点八... 查看详情

工厂模式之简单工厂模式

简单工厂模式简介工厂模式有一种非常形象的描述,建立对象的类就如一个工厂,而需要被建立的对象就是一个个产品;在工厂中加工产品,使用产品的人,不用在乎产品是如何生产出来的。从软件开发的角度来说,这样就有效... 查看详情

设计模式之工厂模式

工厂模式简介工厂模式分为简单工厂模式、工厂模式以及抽象工厂模式三种,在日常编程中会经常使用,简单按照一句话来分别概述这三种模式:简单工厂模式:工厂类中,根据条件决定一个接口由哪个具体产品类来实现工厂模... 查看详情

gof23种设计模式之简单工厂模式工厂方法模式和抽象工厂模式

查看详情

设计模式之简单工厂模式(代码片段)

引言   所属:创建型模式,常用设计模式之一  工厂模式分为:简单工厂模式、工厂方法模式、静态工厂模式、抽象工厂模式。  下面为简单工厂模式。 工厂模式概述   通过使用一个公共接口来指向不同方... 查看详情

设计模式之工厂模式

工厂模式分为三大类简单工厂(SimpleFactory)工厂方法模式(FactoryMethod)抽象工厂模式(AbstractFactory)动态工厂(DynamicFactory。属于优化版简单工厂)目的:    工厂模式主要是为创建对象提供过渡接口。以便将创建对... 查看详情

java设计模式之二-----工厂模式

...了单例模式创建的几种方法以及最优的方法。本篇则介绍设计模式中的工厂模式,主要分为简单工厂模式、工厂方法和抽象工厂模式。简单工厂模式简单工厂模式是属于创建型模式,又叫做静态工厂方法模式。简单工厂模式是由... 查看详情

设计模式之工厂模式

工厂模式可细分为三种:简单工厂模式工厂方法模式抽象工厂模式 下面对3中模式进行图解,帮助理解:1.简单工厂: 2.工厂方法: 3:抽象方法: 整体图示: 查看详情

设计模式之简单工厂模式

简单工厂模式实现计算器功能:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespace简单工厂模式{classProgram{staticvoidMain(string[]args){Operationoperation=Ope 查看详情

设计模式之简单工厂模式

简单工厂模式实现计算器功能:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespace简单工厂模式{classProgram{staticvoidMain(string[]args){Operationoperation=Ope 查看详情

设计模式之工厂模式(代码片段)

工厂模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。简单工厂模式与工厂模式区别:  (1)简单工厂模式的优点在于工厂类中包含了必要的逻辑判断,根据客户... 查看详情