工厂方法模式
基本上有兴趣了解设计模式的都会知道工厂模式,因为各种模式相关的书籍以及博客什么的都是以工厂模式开头的,对于一时兴起或者三天热度的都是会看到工厂模式,但是工厂模式也是用到比较广泛的模式,属于创建型模式。工厂模式分为工厂方法模式和抽象工厂模式,这篇主要总结一下工厂方法模式,而工厂方法模式有细分为:简单工厂模式、工厂方法模式。还是分开了解一下
既然是工厂模式,为了自己加深理解,例子还是用工厂可以造出来的东西吧,比如手机,当然也可以是其他任何产品。
目前市场主要的手机系统类型为安卓、苹果、微软。可能各自的优缺点不一样
假设优点如下:
苹果:
适合玩游戏
安卓:
适合打电话
微软:
适合发短信
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
具体使用:
相关阅读
直接传入参数即可: public static void Triangle(int num) { for (int i = 1; i < num; i++) { for (int j = i; j <
一、 instanceof运算符可以确定对象是否属于一个特定的类。 该运算符是二目运算符,左边的操作元是一个对象,右边是一个类,当左边的
有大神曾说“给我一个记事本,我还你一个项目”,作为小白的我,以前也对这句话深信不疑,但当我参加人生第一次编程考试的时候,我发现我用
往下看呐,这些都是朕为你们打下的江山!曾经我寻找它们流浪于百度、qq、微信、淘宝等等。如今全部送给大家,链接失效时请在下面留言。
java中getRealPath("/")和getContextPath()的区别
一.以下是在servlet中测试的。二.运行结果如下(其中myfile文件夹是不存在的)。三.总结。1.getRealPath("/")方法返回的是项目在服