【Java基础之设计模式】代码库(三)
来源:互联网 发布:软件简介怎么写 编辑:程序博客网 时间:2024/06/05 11:30
抽象工厂模式.java
//抽象工厂public abstract class AbstractFactory { public abstract Vehicle create(); public abstract Weapon create(); public abstract Food create();}//工厂public class Factory extends AbstractFactory { @Override public Vehicle create() { return new RangeRover(); } @Override public Weapon create() { return new AK47(); } @Override public Food create() { return new Apple(); }}//测试public class Test { public static void main(String[] args) { AbstractFactory abf = new Factory(); //产品一 Vehicle v = abf.create(); v.run(); //产品二 Weapon w = abf.create(); w.fire(); //产品三 Food f = abf.create(); f.price(); }}
单例模式.java
//懒汉式public class Singleton { private static Singleton instance = null; //私有构造函数 private Singleton() { } public static synchronized getInstance() { if (instance == null) instance = new Singleton(); return instance; }}//饿汉式public class Singleton { private static final Singleton instance = new Singleton(); private Singleton() { } public static Singleton getInstance() { return instance; }}
工厂方法模式.java
//抽象产品角色public interface Moveable { void run();}//具体产品角色public class Plane implements Moveable { @Override public void run() { System.out.println("飞机飞起来了!"); }}public class Car implements Moveable { @Override public void run() { System.out.println("汽车开起来了!"); }}//抽象工厂public abstract class Factory { abstract Moveable create();}//工厂public class PlaneFactory extends Factory { public Moveable create() { return new Plane(); }}public class CarFactory extends Factory { public Moveable create() { return new Car(); }}//测试public class Test { public static void main(String[] args) { Factory fac = new CarFactory(); Moveable car = fac.create(); car.run(); }}
观察者模式.java
//抽象观察者public interface Watcher { public void update(String str);}//抽象主题角色(被观察者)public interface Watched { public void addWatcher(Watcher watcher); public void removeWatcher(Watcher watcher); public void notifyWatchers(String str);}//观察者public class ConcreteWatcher implements Watcher { @Override public void update(String str) { System.out.println(str); }}//主题角色public class ConcreteWatched implements Watched { private List<Watcher> list = new ArrayList<>(); @Override public void addWatcher(Watcher watcher) { list.add(watcher); } @Override public void removeWatcher(Watcher watcher) { list.remove(watcher); } @Override public void notifyWatchers(String str) { for (Watcher watcher : list) { watcher.update(str); } }}//测试public class Test { public static void main(String[] args) { Watched girl = new ConcreteWatched(); Watcher boy1 = new ConcreteWatcher(); Watcher boy2 = new ConcreteWatcher(); Watched boy3 = new ConcreteWatcher(); //注册 girl.addWatcher(boy1); girl.addWatcher(boy2); girl.addWatcher(boy3); girl.notifyWatchers("我美不美?"); }}
阅读全文
0 0
- 【Java基础之设计模式】代码库(三)
- Java之设计模式【三】
- java设计模式之三
- Java设计模式之三
- java之设计模式三
- Java之设计模式三
- JAVA基础之设计模式
- 大话设计模式之三:浅谈基础
- java 设计模式之三-模版模式
- Java设计模式(三) 之 适配器模式
- JAVA设计模式之三:代理模式
- java设计模式基础之设计原则
- java工厂设计模式基础代码
- Java设计模式(三)之装饰设计模式
- <<黑马程序员>>java基础之设计模式
- java基础学习之设计模式 十七
- java基础之----设计模式单例设计模式
- Java设计模式之代码实现
- 用jupyter notebook打开.ipynb文件
- swift 懒加载
- linux与window间soket通信
- storm基础知识
- JSP内置对象request的方法的使用
- 【Java基础之设计模式】代码库(三)
- Android图文混排
- ubuntu下修改tab键为4个空格
- python快速入门(3)循环结构
- Zookeeper原生API-ZkClient-Curator对比
- adb源码和版本声明
- myBatis的动态SQL
- C/C++编译器内存泄漏检测工具(vld)
- IDL(ENVI/IDL) 简(jian)明(lou)教程:二、ENVI/IDL批处理入门(以投影转换为例)