2.Java设计模式-->观察者模式
来源:互联网 发布:姓氏排序软件下载 编辑:程序博客网 时间:2024/06/06 02:02
这是根据别人文章,自己整理过来的.原文链接:
一:简单工厂模式
BMW.javapublic interface BMW{}
BMW320.javapublic class BMW320 implements BMW{ public BMW320(){ System.out.println("BMW320 has been made already"); }}
BMW520.javapublic class BMW520 implements BMW{ public BMW520(){ System.out.println("BMW520 has been made already"); }}
Factory.javapublic class Factory { public BMW creatBMW(int type){//工厂只是提供一个方法 swith(type){//根据选择进行实例化 case 320: return new BMW320(); case 520: return new BMW520(); default: break; } return null;//确保返回规定返回值,否则编译不通过 }}
Test.javapublic class Test{ public static void main( string[] args){ Factory factory = new Factory(); BMW bmw320 = factory.createBMW( 320); BMW bmw520 = factory.createBMW( 520); }
二:工厂方法
BMW.javapublic interface BMW{}
BMW320.javapublic class BMW320 implements BMW{ public BMW320(){ System.out.println("BMW320 has beed made already"); }}
BMW520.javapublic class BMW520 implements BMW{ public BMW520(){ System.out.println("BMW520 has been made already"); }}
..............以上代码与简单工厂一致
Factory.javapublic interface Factory{ BMW creatBMW();//接口中方法默认修饰符:public abstract }
FactoryBMW320.javapublic class FactoryBMW320 implements Factory{ @Override //覆盖:1返回值 2.方法名 3.参数 public BMW320 createBMW(){//关于此行的 public 修饰符.一般覆盖都是由子类完成.能继承的变量只要 protected 和 public.改写修饰符也是只能放低门槛,所以 protected的变量也会变成 public.一般情况下,需要覆盖的方法的修饰符是不进行调整的,基本是 public. return new BMW320(); } }
FactoryBMW520.javapublic class FactoryBMW520 implements Factory{ @Override public BMW520 createBMW(){ return new BMW520(); } }
Test.javapublic class Test{ public static void main( String[] args){ Factory factory320 = new FactoryBMW320(); Factory factory520 = new FactoryBMW520(); BMW bmw320 = factory320.createBMW(); BMW bmw520 = factory520.createBMW(); }
主要是进行工厂的解耦,让特定工厂生产特定产品.
三抽象工厂
Engine.javapublic interface Engine{//interface 默认属性:public static final.此行的 pulic 可以省略.}
EngineA.javapublic class EngineA implements Engine{ public EngineA(){ System.out.println("equipped with EngineA"); }}
EngineB.javapublic class EngineB implements Engine{ public EngineB(){ System.out.println("equipped with EngineB"); }}
引擎系列产品
Aircondition.javainterface Aircondition{}
AirconditionA.javapublic class AirconditionA implements Aircondition{ public AirconditionA(){ System.out.println("equipped with airconditon A "); }}
AirconditionB.javapublic class AirconditionB implements Aircondition{ public AirconditionB(){ System.out.println("equipped with airconditin B"); }}
空调系列产品的制造
AbstractFactory.javainterface AbstractFactory{ Engine createEngine(); Aircondition createAircondition(); }//明显,我们也可以在其中建造BMW,工厂方法已实验过,不再添加
FactoryBMW320.javapublic class FactoryBMW320 implements AbstractFactory{ public EngineA createEngine(){//此行要加public,否则使用门槛升高到 default,编译不能通过.可以指定返回值的子类. return new EngineA(); } public AirconditionA createAircondition(){ return new AirconditionA(); }
相同地:
FactoryBMW520.javapublic class FactoryBMW520 implements AbstractFactory{ public EngineB createEngine(){ return new EngineB(); } public AirconditionB createAircondition(){ return new AirconditonB(); } }
最后,测试.
Test.javapublic class Test{ public static void main ( String[] args ){ FactoryBMW320 factory = new FactoryBMW320(); factory.createEngine(); factory.createAircondition();//生产出a型引擎,空调.
阅读全文
0 0
- 2.Java设计模式-->观察者模式
- 设计模式-观察者模式(Java)
- 设计模式-观察者模式
- 设计模式-观察者模式
- 模式设计-观察者
- Java与设计模式(2)--观察者模式
- JAVA设计模式之观察者模式2
- Java 设计模式 (2) 观察者模式
- Java设计模式2:观察者模式1
- java设计模式-----观察者
- JAVA 观察者设计模式
- java观察者设计模式
- java观察者设计模式
- java 观察者设计模式
- JAVA-观察者设计模式
- JAVA设计模式--观察者
- Java---观察者设计模式
- Java设计模式:观察者
- HWND转QWidget
- Android面试攻略
- 信道安全
- 字符串的全排列和组合算法
- 数据库SQL实战-查找入职员工时间排名倒数第三的员工所有信息
- 2.Java设计模式-->观察者模式
- 实现背景透明,文字不透明,兼容所有浏览器
- 翻书效果
- 物联网安全体系
- python实现Kruskal算法求解加权图中最小生成树问题
- python zwQTBox下down_stk_all修改为多进程及遇到的问题
- Faster Rcnn+ZF用自己的数据训练模型成功经验(matlab版)
- 图书管理系统7.9(只有登录界面)
- React 数据流与状态控制-props与sate的区别