【Java基础之设计模式】代码库(三)
2017-07-03 21:50
267 查看
抽象工厂模式.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("我美不美?"); } }
相关文章推荐
- java基础之设计模式之单例模式
- Java基础之IO流,装饰设计模式的应用之行号、缓冲读取文本文件
- 黑马程序员:Java基础总结----模版方法设计模式
- 别人的Morgan Stanley面试,注重基础,java core、多线程、设计模式、设计程序。。。
- Java基础06:Static;单例设计模式;对象初始化;构造函数;
- java设计模式基础之设计原则
- JAVA操作数据库方式与设计模式应用-Java基础-Java-编程开发
- 黑马程序员_java基础复习之十常用设计模式总结
- 黑马程序员JAVA基础-单例设计模式
- Java基础加强 线程范围内数据共享设计模式
- 黑马程序员_Java基础_面向对象(Static的使用、对象初始化和调用成员过程、单例设计模式)
- Java读书笔记12 事件处理基础 Observer设计模式
- JAVA设计模式系列之Adapter(适配器)-Java基础-Java-编程开发
- 黑马程序员:Java基础总结----装饰设计模式
- 黑马程序员---JAVA基础JAVA23种设计模式之---单例设计模式
- [零基础学JAVA]Java SE应用部分-36.反射机制与工厂设计模式 推荐
- (2011年java基础)设计模式总结(简述)
- Java基础之装饰设计模式理解
- java基础,几种简单设计模式
- Java设计模式---UML基础