当前位置: 首页 > news >正文

贵州省住房和城乡建设厅网站(深汕特别合作区面积

贵州省住房和城乡建设厅网站(,深汕特别合作区面积,电脑手机网站制作,程序开发的步骤文章目录 一、简单工厂模式1、传统方式实现披萨订购( 可以忽略)披萨父类 Pizza子类胡椒披萨 PepperPizza子类印度披萨 GreekPizza订购披萨 OrderPizza订购披萨的 客户端 PizzaStore运行结果传统的方式的优缺点#xff0c;新增子类需要修改的地方牵扯太多传统方式的究极耦合 2、… 文章目录 一、简单工厂模式1、传统方式实现披萨订购( 可以忽略)披萨父类 Pizza子类胡椒披萨 PepperPizza子类印度披萨 GreekPizza订购披萨 OrderPizza订购披萨的 客户端 PizzaStore运行结果传统的方式的优缺点新增子类需要修改的地方牵扯太多传统方式的究极耦合 2、使用简单工厂模式 完整代码披萨父类 Pizza披萨子类 GreekPizza / PepperPizza / ChinesePizza订购披萨 OrderPizza披萨简单工厂 SimpleFactory客户端订购披萨 PizzaStore添加披萨子类 USAPizza 美国披萨运行结果 二、工厂方法模式完整代码披萨父类 Pizza北京奶酪披萨 BJCheesePizza北京胡椒披萨 BJPepperPizza伦敦奶酪披萨 LDCheesePizza伦敦胡椒披萨 LDPepperPizza抽象订购披萨 OrderPizza 充当工厂角色 订购披萨子类 BJOrderPizza / LDOrderPizzaBJOrderPizzaLDOrderPizza客户端订购披萨 运行结果添加披萨口味 三、抽象工厂模式代码示例抽象工厂 AbsFactory 接口北京披萨工厂 BJFactory 实现 AbsFactory 接口伦敦披萨工厂 LDFactory 实现 AbsFactory 接口披萨订购 OrderPizza 聚合 AbsFactory 接口客户端订购披萨运行结果 JDKの工厂模式: Calendar日历类工厂模式小结 一、简单工厂模式 1、传统方式实现披萨订购( 可以忽略) 披萨父类 Pizza package tanchishell.SJMS.factory;//抽象类 Pizza 后续的所有 披萨都继承该类 public abstract class Pizza {protected String name;//由于不同的披萨有着不同的原材料所有 准备原材料的方法是抽象的需要子类自己去实现public abstract void prepare();//一下流程是各种披萨共有的子类继承后自动实现public void bake() {System.out.println(name baking;);}public void cut() {System.out.println(name cutting;);}public void box() {System.out.println(name boxing;);}public void setName(String name) {this.name name;} } 子类胡椒披萨 PepperPizza package tanchishell.SJMS.factory;public class PepperPizza extends Pizza{Overridepublic void prepare() {System.out.println(准备胡椒披萨的原材料);} } 子类印度披萨 GreekPizza package tanchishell.SJMS.factory;public class GreekPizza extends Pizza{Overridepublic void prepare() {System.out.println(准备希腊披萨的原材料);} } 订购披萨 OrderPizza package tanchishell.SJMS.factory;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public class OrderPizza {//构造器public OrderPizza() {Pizza pizza null;String orderType; // 订购披萨的类型do {orderType getType();if (orderType.equals(greek)) {pizza new GreekPizza();pizza.setName( 希腊披萨 );} else if (orderType.equals(pepper)) {pizza new PepperPizza();pizza.setName(胡椒披萨);} else {System.out.println(请检查您的输入);break;}//输出 pizza 制作过程pizza.prepare();pizza.bake();pizza.cut();pizza.box();} while (true);}//获取披萨的类型private String getType() {try {BufferedReader strin new BufferedReader(new InputStreamReader(System.in));System.out.println(input pizza 类型:);String str strin.readLine();return str;} catch (IOException e) {e.printStackTrace();return ;}}} 订购披萨的 客户端 PizzaStore package tanchishell.SJMS.factory;//订购Pizza的客户端 public class PizzaStore {public static void main(String[] args) {new OrderPizza();}} 运行结果 传统的方式的优缺点新增子类需要修改的地方牵扯太多 传统方式的究极耦合 新增一个子类所有的OrderPizza类都需要修改一旦过多耦合度极高。 2、使用简单工厂模式 完整代码 披萨父类 Pizza package tanchishell.SJMS.factory;//抽象类 Pizza 后续的所有 披萨都继承该类 public abstract class Pizza {protected String name;//由于不同的披萨有着不同的原材料所有 准备原材料的方法是抽象的需要子类自己去实现public abstract void prepare();//以下流程是各种披萨共有的子类继承后自动实现public void bake() {System.out.println(name baking;);}public void cut() {System.out.println(name cutting;);}public void box() {System.out.println(name boxing;);}public void setName(String name) {this.name name;} } 披萨子类 GreekPizza / PepperPizza / ChinesePizza 印度披萨 package tanchishell.SJMS.factory;public class GreekPizza extends Pizza{Overridepublic void prepare() {System.out.println(准备希腊披萨的原材料);} }胡椒披萨 package tanchishell.SJMS.factory;public class PepperPizza extends Pizza{Overridepublic void prepare() {System.out.println(准备胡椒披萨的原材料);} }中国披萨 package tanchishell.SJMS.factory;public class ChinesePizza extends Pizza {Overridepublic void prepare() {System.out.println(准备中国披萨的原材料);} } 订购披萨 OrderPizza package tanchishell.SJMS.factory;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public class OrderPizza{//定义一个简单工厂对象 // SimpleFactory simpleFactory new SimpleFactory(); //如果OrderPizza 和 工厂类同生共死就是组合关系SimpleFactory simpleFactory;Pizza pizza null;//构造器public OrderPizza(SimpleFactory simpleFactory) {setFactory(simpleFactory);}public void setFactory(SimpleFactory simpleFactory) {String orderType ; //用户输入的先定义一个空串提供下面使用this.simpleFactory simpleFactory; //设置简单工厂对象do {orderType getType();//可以在这里更换工厂方法pizza this.simpleFactory.createPizza(orderType);//输出 pizzaif(pizza ! null) { //订购成功pizza.prepare();pizza.bake();pizza.cut();pizza.box();} else {System.out.println( 订购披萨失败 );break;}}while(true);}//获取用户需要披萨的类型private String getType() {try {BufferedReader strin new BufferedReader(new InputStreamReader(System.in));System.out.println(input pizza 类型:);String str strin.readLine();return str;} catch (IOException e) {e.printStackTrace();return ;}}} 披萨简单工厂 SimpleFactory package tanchishell.SJMS.factory;/*** 添加新品种的 披萨 只需要添加一个Pizza子类和在工厂类中做一个判断*/public class SimpleFactory {//更加 orderType 返回对应的 Pizza 对象public Pizza createPizza(String orderType) {Pizza pizza null;System.out.println(使用简单工厂模式);if (orderType.equals(greek)) {pizza new GreekPizza();pizza.setName( 希腊披萨 );} else if (orderType.equals(chinese)) {pizza new ChinesePizza();pizza.setName( 中国披萨 );} else if (orderType.equals(pepper)) {pizza new PepperPizza();pizza.setName(胡椒披萨);}else if (orderType.equals(usa)){ //新增美国披萨pizza new USAPizza();pizza.setName(我是美国披萨);}return pizza;}//简单工厂模式 也叫 静态工厂模public static Pizza createPizza2(String orderType) {Pizza pizza null;System.out.println(使用简单工厂模式 2);if (orderType.equals(greek)) {pizza new GreekPizza();pizza.setName( 希腊披萨 );} else if (orderType.equals(chinese)) {pizza new ChinesePizza();pizza.setName( 中国披萨 );} else if (orderType.equals(pepper)) {pizza new PepperPizza();pizza.setName(胡椒披萨);}return pizza;} } 客户端订购披萨 PizzaStore package tanchishell.SJMS.factory;//订购Pizza的客户端 public class PizzaStore {public static void main(String[] args) { // new OrderPizza();//获取订单传入一个工厂new OrderPizza(new SimpleFactory());System.out.println(退出程序);}} 添加披萨子类 USAPizza 美国披萨 package tanchishell.SJMS.factory;public class USAPizza extends Pizza{Overridepublic void prepare() {System.out.println(准备制作美国披萨);} } 运行结果 二、工厂方法模式 完整代码 披萨父类 Pizza package tanchishell.SJMS.methedfactory;//抽象类 Pizza 后续的所有 披萨都继承该类 public abstract class Pizza {protected String name;//由于不同的披萨有着不同的原材料所有 准备原材料的方法是抽象的需要子类自己去实现public abstract void prepare();//以下流程是各种披萨共有的子类继承后自动实现public void bake() {System.out.println(name baking;);}public void cut() {System.out.println(name cutting;);}public void box() {System.out.println(name boxing;);}public void setName(String name) {this.name name;} } 北京奶酪披萨 BJCheesePizza public class BJCheesePizza extends Pizza{Overridepublic void prepare() {setName(北京奶酪披萨);System.out.println(准备北京制作奶酪披萨);} }北京胡椒披萨 BJPepperPizza public class BJPepperPizza extends Pizza {Overridepublic void prepare() {setName(北京胡椒披萨);System.out.println(准备北京胡椒披萨的原材料);} } 伦敦奶酪披萨 LDCheesePizza public class LDCheesePizza extends Pizza{Overridepublic void prepare() {setName(伦敦奶酪披萨);System.out.println(准备伦敦制作奶酪披萨);} }伦敦胡椒披萨 LDPepperPizza public class LDPepperPizza extends Pizza {Overridepublic void prepare() {setName(伦敦胡椒披萨);System.out.println(准备伦敦胡椒披萨的原材料);} }抽象订购披萨 OrderPizza 充当工厂角色 package tanchishell.SJMS.methedfactory;import tanchishell.SJMS.factory.SimpleFactory;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public abstract class OrderPizza {//定义一个抽象方法createPizza , 让各个工厂子类自己实现abstract Pizza createPizza(String orderType);// 构造器public OrderPizza() {Pizza pizza null;String orderType; // 订购披萨的类型do {orderType getType();pizza createPizza(orderType); //抽象方法由工厂子类完成//输出 pizza 制作过程pizza.prepare();pizza.bake();pizza.cut();pizza.box();} while (true);}//获取用户需要披萨的类型private String getType() {try {BufferedReader strin new BufferedReader(new InputStreamReader(System.in));System.out.println(input pizza 类型: ---- pepper(胡椒口味) -----cheese奶酪口味);String str strin.readLine();return str;} catch (IOException e) {e.printStackTrace();return ;}}} 订购披萨子类 BJOrderPizza / LDOrderPizza BJOrderPizza package tanchishell.SJMS.methedfactory;public class BJOrderPizza extends OrderPizza{OverridePizza createPizza(String orderType) {Pizza pizza null;if(orderType.equals(cheese)) {pizza new BJCheesePizza();} else if (orderType.equals(pepper)) {pizza new BJPepperPizza();}/*** 需要添加北京口味的披萨只需要设计一个披萨子类 并在 这里加一个判断*/return pizza;} } LDOrderPizza package tanchishell.SJMS.methedfactory;public class LDOrderPizza extends OrderPizza{OverridePizza createPizza(String orderType) {Pizza pizza null;if(orderType.equals(cheese)) {pizza new LDCheesePizza();} else if (orderType.equals(pepper)) {pizza new LDPepperPizza();} // TODO Auto-generated method stubreturn pizza;} } 客户端订购披萨 package tanchishell.SJMS.methedfactory;import java.util.Scanner;public class PizzaStore {public static void main(String[] args) {Scanner scanner new Scanner(System.in);System.out.println(请选择您的口味---目前支持 1北京口味 ----2伦敦口味);int i scanner.nextInt();if(i 1){new BJOrderPizza();}if(i 2){new LDOrderPizza();}} } 运行结果 添加披萨口味 新增子类实现 在对应的 Order 实现类进行判断 测试 三、抽象工厂模式 抽象工厂模式是对简单工厂和工厂方法的一个整合 代码示例 pizza 代码和 工厂方法模式一致就不写了 抽象工厂 AbsFactory 接口 public interface AbsFactory {//让下面的工厂子类来 具体实现Pizza createPizza(String orderType); } 北京披萨工厂 BJFactory 实现 AbsFactory 接口 package tanchishell.SJMS.absFactory;public class BJFactory implements AbsFactory{Overridepublic Pizza createPizza(String orderType) {System.out.println(~使用的是抽象工厂模式~);Pizza pizza null;if(orderType.equals(cheese)) {pizza new BJCheesePizza();} else if (orderType.equals(pepper)){pizza new BJPepperPizza();}/*** 添加披萨子类和判断就能完成披萨口味的添加*/return pizza;} } 伦敦披萨工厂 LDFactory 实现 AbsFactory 接口 package tanchishell.SJMS.absFactory;public class LDFactory implements AbsFactory{Overridepublic Pizza createPizza(String orderType) {System.out.println(~使用的是抽象工厂模式~);Pizza pizza null;if (orderType.equals(cheese)) {pizza new LDCheesePizza();} else if (orderType.equals(pepper)) {pizza new LDPepperPizza();}return pizza;} } 披萨订购 OrderPizza 聚合 AbsFactory 接口 package tanchishell.SJMS.absFactory;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public class OrderPizza {AbsFactory factory;// 构造器public OrderPizza(AbsFactory factory) {setFactory(factory);}private void setFactory(AbsFactory factory) {Pizza pizza null;String orderType ; // 用户输入this.factory factory;do {orderType getType(); // factory 可能是北京的工厂子类也可能是伦敦的工厂子类pizza factory.createPizza(orderType);if (pizza ! null) { // 订购 okpizza.prepare();pizza.bake();pizza.cut();pizza.box();} else {System.out.println(订购失败);break;}} while (true);}// 写一个方法可以获取客户希望订购的披萨种类private String getType() {try {BufferedReader strin new BufferedReader(new InputStreamReader(System.in));System.out.println(input pizza 类型: ---- pepper(胡椒口味) -----cheese奶酪口味);String str strin.readLine();return str;} catch (IOException e) {e.printStackTrace();return ;}} } 客户端订购披萨 package tanchishell.SJMS.absFactory;import java.util.Scanner;public class PizzaStore {public static void main(String[] args) {Scanner scanner new Scanner(System.in);System.out.println(请选择您的口味---目前支持 1北京口味 ----2伦敦口味);int i scanner.nextInt();if(i 1){new OrderPizza(new BJFactory());}if(i 2){new OrderPizza(new LDFactory());}} } 运行结果 JDKの工厂模式: Calendar日历类 Calendar cal Calendar.getInstance(); // 注意月份下标从0开始所以取月份要1System.out.println(年: cal.get(Calendar.YEAR));System.out.println(月: (cal.get(Calendar.MONTH) 1));System.out.println(日: cal.get(Calendar.DAY_OF_MONTH));System.out.println(时: cal.get(Calendar.HOUR_OF_DAY));System.out.println(分: cal.get(Calendar.MINUTE));System.out.println(秒: cal.get(Calendar.SECOND));进入Calendar cal Calendar.getInstance(); 工厂模式小结
http://www.hkea.cn/news/14372674/

相关文章:

  • 绍兴建设公司网站轻量wordpress主题
  • 怎么看网站pr值博兴做网站
  • 最好的汽车科技网站建设Wordpress慢加内存还是带宽
  • 昆山正规网站建设不是固定ip如何做网站
  • 嘉兴seo公司网站北京保障房建设项目网站
  • 网站备案简介怎么写无锡网站关键词优化软件咨询
  • 做测评的网站营销型网站建设规划书
  • 青岛找网站建设公司哪家好wordpress unknown
  • 网站建设模板下载免费设计制作图片
  • 网站首页轮播图片小学生课程同步做网站软件
  • 查网站权重邢台网站建设哪儿好
  • 网站开发总结多企业宣传网站建设
  • 肥西县建设局资询网站什么源码做有趣的网站
  • 在技校计算机网站建设东莞网站建设音乐盒
  • 大专电子商务主要学什么博客seo优化技术
  • 一条龙建站多少钱刷关键词怎么刷
  • 网站项目申请网站建设公司如何转型
  • 建设棋牌网站流程搜索引擎营销概念
  • 租车网站开发现在做网站都是怎么做的
  • 用二级域名做网站对seo企业安全文化的建设方案
  • 珠海市网站建设典当行网站
  • photoshop网站视觉设计步骤成全视频在线直播观看
  • 网站对比中国互联网平台
  • 免费网站重生做军嫂网站建站论坛
  • 申请付费网站石家庄网站制作费用
  • 现在用什么做网站个人网站建设实训报告
  • 网站开发服务内容wordpress安装视频
  • 怎么申请网站空间域名it运维发展方向
  • 在线网页设计网站网站建设哪个公司好
  • 英文网站怎么做外贸推广雄安建设网站制作