必威体育Betway必威体育官网
当前位置:首页 > IT技术

java设计模式(一)---工厂方法模式

时间:2019-08-16 02:42:08来源:IT技术作者:seo实验室小编阅读:87次「手机版」
 

工厂方法模式

基本上有兴趣了解设计模式的都会知道工厂模式,因为各种模式相关的书籍以及博客什么的都是以工厂模式开头的,对于一时兴起或者三天热度的都是会看到工厂模式,但是工厂模式也是用到比较广泛的模式,属于创建型模式。工厂模式分为工厂方法模式和抽象工厂模式,这篇主要总结一下工厂方法模式,而工厂方法模式有细分为:简单工厂模式、工厂方法模式。还是分开了解一下

既然是工厂模式,为了自己加深理解,例子还是用工厂可以造出来的东西吧,比如手机,当然也可以是其他任何产品

目前市场主要的手机系统类型为安卓、苹果微软。可能各自的优缺点不一样

假设优点如下:

苹果:

适合玩游戏

安卓:

适合打电话

微软:

适合发短信

1.简单工厂模式

简单工厂模式是一个由工厂对象决定创建出哪一种产品类的实例,又叫静态工厂方法模式。

我们先把手机功能简化一下,假设只能打电话,发短信,玩游戏,新建一个手机的抽象接口

在这里插入图片描述

Phone

import java.util.*;


public interface Phone {

   void callNumber();
   
   void sendmessage(String message);
   
   void playgames(int gameName);

}

每种手机都要实现基本的功能,下面是苹果的实现类:

import java.util.*;

public class APPle implements Phone {

   public void callNumber() {
      // TODO: implement
   }
   
   
   public void sendMessage(String message) {
      // TODO: implement
   }
   
   
   public void playgames(int gameName) {
      // TODO: implement
   }

}

这样每次使用手机类的时候可以根据手机的用途去new实例,代码会更加容易维护。也会更简洁,项目中很少用,但是可以作为入门了解

2.工厂方法模式

工厂方法模式是简单工厂的进一步抽象和推广,由于工厂方法模式具有多态性,工厂模式方法既保持了简单工厂的优点,同时又克服了它的缺点,简单工厂模式中的工厂类负责创建实例,那么如果有新的机型添加,就要修改工厂类,这样也不利于进一步松耦合。工厂方法模式中核心工厂类不负责所有实例的创建,而是将具体的创建工作交给了子类去完成,这个核心类成为了一个抽象工厂角色。

工厂方法模式设计到一下四个角色的概念:

1. 抽象工厂角色

工厂方法模式的核心,创建产品的类必须实现该接口

2. 具体工厂角色

该角色实现了抽象工厂接口,具体如何创建产品就是在该类中实现

3. 抽象产品角色

所有产品的超类,负责实现产品共性的抽象定义

4. 具体产品角色

该角色实现了抽象产品接口,负责具体不同产品的业务逻辑

承接上面的工作创建抽象工厂角色

工厂

新建创建机型001的具体工厂角色

实现类

抽象产品角色与具体产品角色已经定义过了Phone与Phone001-003

具体使用:

使用

相关阅读

Java输出直角三角形方法

直接传入参数即可: public static void Triangle(int num) { for (int i = 1; i < num; i++) { for (int j = i; j <

Java中instanceof运算符用法详解

一、 instanceof运算符可以确定对象是否属于一个特定的类。 该运算符是二目运算符,左边的操作元是一个对象,右边是一个类,当左边的

java编程常用软件

有大神曾说“给我一个记事本,我还你一个项目”,作为小白的我,以前也对这句话深信不疑,但当我参加人生第一次编程考试的时候,我发现我用

java学习视频大放送,有了它们,你好几年都不用再找视频啦

往下看呐,这些都是朕为你们打下的江山!曾经我寻找它们流浪于百度、qq、微信、淘宝等等。如今全部送给大家,链接失效时请在下面留言。

java中getRealPath("/")和getContextPath()的区别

一.以下是在servlet中测试的。二.运行结果如下(其中myfile文件夹是不存在的)。三.总结。1.getRealPath("/")方法返回的是项目在服

分享到:

栏目导航

推荐阅读

热门阅读