软件设计-简单工厂模式
使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数M,则返回一个Man对象,如果传入参数W,则返回一个Woman对象,如果传入参数R,则返回一个Robot对象。请用程序设计实现上述场景。
类图:
Java
package SFP; /** * 简单工厂模式 */ //女娲造人工厂 public class NvwaPersonFactory { //抽象类--人类 public abstract class Person{ public void birth(){} } //具体产品类 public class Man extends Person{ @Override public void birth(){ System.out.println("女娲造男人。"); super.birth(); } } public class Woman extends Person{ @Override public void birth(){ System.out.println("女娲造女人。"); super.birth(); } } public class Robot extends Person{ @Override public void birth(){ System.out.println("女娲造机器人。"); super.birth(); } } //造人 public Person getPerson(String type) { Person Person = null; if (type.equalsIgnoreCase("M")) { Person = new Man(); } else if (type.equalsIgnoreCase("W")) { Person = new Woman(); } else if (type.equalsIgnoreCase("R")) { Person = new Robot(); } return Person; } public static void main(String[] args) {//入口 Person person; NvwaPersonFactory nvwaPersonFactory = new NvwaPersonFactory(); person = nvwaPersonFactory.getPerson("M"); person.birth(); person = nvwaPersonFactory.getPerson("W"); person.birth(); person = nvwaPersonFactory.getPerson("R"); person.birth(); } }
C++
#include <iostream> using namespace std; /** * 简单工厂模式 */ class Person { public: virtual void make() { cout << "女娲造人" << endl; } }; class Woman :public Person { public: void make() { cout << "女娲造女人" << endl; } }; class Man :public Person { public: void make() { cout << "女娲造男人" << endl; } }; class Robot :public Person { public: void make() { cout << "女娲造机器人" << endl; } }; class Nvwa { public: Person* makePerson(string type) { Person* person; if (type == "W" || type == "w") { Woman person1; person = &person1; } else if (type == "M" || type == "m") { Man person1; person = &person1; } else if (type == "R" || type == "r") { Robot person1; person = &person1; } else if (type == "0") { cout << "退出" << endl; Person person1; person = &person1; } else { cout << "不能乱输嗷!" << endl; Person person1; person = &person1; } return person; } }; int main(){ string str = ""; Nvwa nv; Person* person; do { cout << "输入W、M、R 让女娲造人,输入0结束" << endl; cin >> str; person = nv.makePerson(str); person->make(); } while (str != "0"); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下