抽象工厂与工厂模式例子

news/2024/7/5 3:51:19

NativeFactory。java

 

package com;
//定义 人有杀日本人 和 杀美国人两个方法
interface NativePerson{
 public void killAmeria();
 public void killJapan();
}
//中国人实现了人的接口
class NativeChinese implements NativePerson{
 //中国人杀美国人
 public void killAmeria() { 
  System.out.println("Chinese kill Ameria");
 }
 //中国人杀日本人
 public void killJapan() {
  System.out.println("Chinese kill Japan");
 }

}
//俄国人实现了人的接口
class NativeRussia implements NativePerson{
 public void killAmeria()
 {
  System.out.println("Russia kill Ameria");
 }
 public void killJapan()
 {
  System.out.println("Russia kill Japan");
 }
}
public class NativeFactory
{
 /**
  * 假如 我要添加朝鲜人 就不需要动前面的逻辑 只需要假如 i==2
   return new CX();就行了 我们不需要通过new 关键字去实例化了
   在整个就不涉及到Sample的具体子类,达到封装效果,也就减少错误修改的机会,
   这个原理可以用很通俗的话来比喻:就是具体事情做得越多,越容易范错误.
   这每个做过具体工作的人都深有体会,相反,
   官做得越高,说出的话越抽象越笼统,范错误可能性就越少.
   **/
 public static NativePerson getPerson(int i)
 {
  if(i==0)
   return new NativeChinese();
  else
   return new NativeRussia();
 }
 public static void main(String[] args) {
  NativePerson person=NativeFactory.getPerson(0);
  person.killAmeria();
  person.killJapan();
 }
}

 

 

UFOFactory.java

 

package com;

//定义 人有杀日本人 和 杀美国人两个方法
interface UFOPerson{
 public void killAmeria();
 public void killJapan();
}
//中国人实现了人的接口
class UFOChinese implements UFOPerson{
 //中国人杀美国人
 public void killAmeria() { 
  System.out.println("UFOChinese kill Ameria");
 }
 //中国人杀日本人
 public void killJapan() {
  System.out.println("UFOChinese kill Japan");
 }

}
//俄国人实现了人的接口
class UFORussia implements UFOPerson{

 public void killAmeria()
 {
  System.out.println("UFORussia kill Ameria");
 }

 public void killJapan()
 {
  System.out.println("UFORussia kill Japan");
 }
}
public class UFOFactory
{

 public static UFOPerson getPerson(int i)
 {
  if(i==0)
   return new UFOChinese();
  else
   return new UFORussia();
 }
 public static void main(String[] args) {
  UFOPerson person=UFOFactory.getPerson(0);
  person.killAmeria();
  person.killJapan();
 }
}

 

 

AbstractFactory.java

 

/**
 * 假如现在有一个nativ工厂 又多了个UFO工厂 现在要同时生产不能中国人和俄国人
 * 其实就是多个工厂模式的联合 就是抽象工厂模式

   有几个工厂要磨合成一个抽象工厂模式其实就很简单

  添加一个抽象类  该抽象类中添加方法   分别用于获取 每个工厂的接口方法

  工厂类中有几个方法 就产生几个工厂 继承抽象工厂   就行了
 */
abstract class CommonFactory {
 public abstract NativePerson getNativePerson();
 public abstract UFOPerson getUFOPerson();
}
class ChineseFactory extends CommonFactory {
 public NativePerson getNativePerson() {
  return new NativeChinese();
 }

 public UFOPerson getUFOPerson() {
  return new UFOChinese();
 }
}

class RussionFactory extends CommonFactory {
 public NativePerson getNativePerson() {
  return new NativeRussia();
 }

 public UFOPerson getUFOPerson() {
  return new UFORussia();
 }
}

 

 

 

 

642 924 975
1372

转载于:https://www.cnblogs.com/liaomin416100569/archive/2010/03/25/9331903.html


http://lihuaxi.xjx100.cn/news/281774.html

相关文章

腾讯拥抱开源:首次公布开源路线图,技术研发向共享、复用和开源迈进

整理 | 夕颜出品 | AI科技大本营(ID:rgznai100)导读:去年,知乎上一篇讨论腾讯技术的帖子异常火爆,讨论的主题是当下(2018 年)腾讯的技术建设是否处于落后同体量公司的状态,这篇帖子得…

一键生成人脸像素图,还能上传到动森!这个项目很好玩

机器之心报道参与:魔王、Jamin日本独立开发者 Sato 曾因阿斯伯格综合征辍学离职,后来自学 AI 开发 AI Gahaku 项目(AI 大师级画家),在日美引起轰动,10 天覆盖百万用户。此外,她还做了另一个有趣…

使用Python+OpenCV+dlib为人脸生成口罩

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达推荐阅读 42个pycharm使用技巧,瞬间从黑铁变王者Google C项目编程风格指南 (中文版) 分享转自|深度学习与计算机视觉本文使用OpenCV dlib库生成口罩口罩已经被…

企业的云服务选择:SaaS、PaaS、IaaS的对比分析

如今,云服务更为重要。几乎每个企业都需要使用云计算服务。管理大量敏感和机密数据变得困难。因此,在任何类型的企业中使用云服务都是不可避免的。 首先以相对简单的方式进行对比。 如今,云服务更为重要。几乎每个企业都需要使用云计算服务。…

html 常用方法,jquery的常用方法有哪些?

jquery的常用方法有哪些?下面本篇文章给大家介绍一下jQuery中的几种常用方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。jQuery的几个常用方法.bind().unbind().css().hasclass().removeclass.parent().children().ht…

Google Adsense实用防踢技巧总结

我们都知道,对个人草根站长来说,Google AdSense是网站收入的主要来源之一,我在这里介绍一些常用的技巧。 希望通过这些技巧能够增加大家的Google AdSense收入,并防止自己的帐号被删除。大家喜欢的话就顶下吧! 广告的位…

全国 12 所发展势头迅猛的大学,你的学校上榜了吗?

来源 | 高中学习资料库(gzxxzlk)、中财蹦豆等转自 | 学术志编辑 | 学妹【导读】全国优秀的大学,在1981年以前,被确定为全国重点大学的学校,在当时都是属于实力一流的大学。后来国家实行了211工程。有一大批原来不是全…

充气娃娃什么感觉?Python告诉你

作者 | 猪哥来源 | 裸睡的猪(ID:IT--Pig)【导语】:之前为大家介绍了 requests 库的基本信息以及使用方法,收到了很多同学的反馈,期待作者新作,今天不负所望,作者就带大家来玩一把刺激…