博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用工厂方法模式创建实例(JAVA版)
阅读量:3758 次
发布时间:2019-05-22

本文共 1449 字,大约阅读时间需要 4 分钟。

工厂方法模式简介
 工厂方法模式中的接口工厂负责定义创建对象的方法,具体对象的创建由实现抽象工厂接口的实现类完成。
 工厂方法的优点:不需要使用者(客户端)去创建.

package DesignModes;

abstract class Moneys {
    public abstract void checkCurrency();
}
class RMB
extends Moneys {
    @Override
    public void checkCurrency() {
        System.out.println(
"恭喜你获得人民币");
    }
}
class AUD
extends Moneys {
    @Override
    public void checkCurrency() {
        System.out.println(
"恭喜你获得澳大利亚元");
    }
}
class USD
extends Moneys {
    @Override
    public void checkCurrency() {
        System.out.println(
"恭喜你获得美元");
    }
}
interface Mint {
    Moneys createCurrency(String money);
// 铸币厂专门铸造货币
}
class CurrencyMaker implements Mint {
    @Override
    public Moneys createCurrency(String money) {
        if (money.toUpperCase().equals(
"RMB")) {
            
return new RMB();
        } else if (money.toUpperCase().equals(
"AUD")) {
            
return new AUD();
        } else if (money.toUpperCase().equals(
"USD")) {
            
return new USD();
        } else {
            
return
null;
        }
    }
}
public class MoneysFacotoryDemo {
    public static void main(String[] args) {
        CurrencyMaker cmk = new CurrencyMaker();
        // 创建一个澳大利亚元货币
        Moneys money = cmk.createCurrency(
"AUD");
      
 if (money !=
null) {
            money.checkCurrency();
        }
        // 创建一个人民币元货币
        CurrencyMaker cmk2 = new CurrencyMaker();
        Moneys money2 = cmk2.createCurrency(
"RMB");
        
if (money2 !=
null) {
            money2.checkCurrency();
        }
        // 创建一个美元
        CurrencyMaker cmk3 = new CurrencyMaker();
        Moneys usd = cmk3.createCurrency(
"USD");
      
 if (usd !=
null) {
            usd.checkCurrency();
        }
    }

}

运行结果如下:

恭喜你获得澳大利亚元

恭喜你获得人民币
恭喜你获得美元

————————

好了,就写到这里,看官们觉得涨知识了,请在文章左侧点个赞 ^_^

转载地址:http://nsrsn.baihongyu.com/

你可能感兴趣的文章
Vue.js学习笔记—插值的操作(1)
查看>>
CSS的四种方式实现水平居中
查看>>
RISC-V生态架构浅析(认识RISC-V)
查看>>
? 精美图文带你掌握 JVM 内存布局
查看>>
谈谈go.sum
查看>>
tls 1.2 example
查看>>
GitHub 计划登陆中国,将产生哪些影响与意义?
查看>>
2019 我是怎样熬过来的?
查看>>
【C++学习计划】深入浅出——变量作用域(Day3)
查看>>
策略模式
查看>>
Spring Boot 实战 入门
查看>>
关于web系统整体优化提速总结
查看>>
分布式文件系统 - fastDFS
查看>>
BUAA OO 2019 第一单元作业总结
查看>>
格网编码查询方案在项目运用上的进一步探索
查看>>
BUAA-OO-2019 第三单元总结
查看>>
Matlab策略模式
查看>>
架构整洁之道
查看>>
支付渠道路由系统进化史
查看>>
行为型模式:解释器模式
查看>>