Java笔记-Java中桥接模式
最近在研究一個APP,逆向后發現貌似用了橋接模式,特意學習了下Java中的橋接模式。
關于C++的橋接鏈接如下:
https://blog.csdn.net/qq78442761/article/details/98877170
?
下面是java相關的代碼以及自己的新理解!
首先設計模式代表外招功法,是外招的模板,個人覺得他是為面向對象7個原則而準備的:
面向對象程序設計要考慮7個原則:
單一職責原則:設計目的單一的類;
開放封閉原則:對擴展開發,對修改封閉;
李氏替換原則:子類可以替換父類;
依賴倒置原則:要依賴于抽象,不依賴于具體,面向接口的編程;
接口隔離原則:使用多個專用的接口比使用單一的接口要好;
組合重用原則:盡可能使用組合,而非繼承;
迪米特原則:一個對象盡可能少的了解其他對象。
?
通過這7個原則,創建起來的設計模式。
?
關鍵UML圖如下:
Weapon是一個接口,Persion是一個抽象類,他的子類有男人和女人,而weapon的實現是Sword和Gun。
?
各個代碼是這樣的:
Person.java
package cn.example;public abstract class Person {protected Weapon weapon;protected Person(Weapon weapon) {this.weapon = weapon;}public void todoSomething(){weapon.attack();}public void changeWeapon(Weapon weapon){this.weapon = weapon;} }Weapon.java
package cn.example;public interface Weapon {void attack(); }Man.java
package cn.example;public class Man extends Person{public Man(Weapon weapon) {super(weapon);}@Overridepublic void todoSomething() {weapon.attack();} }Woman.java
package cn.example;public class Woman extends Person{public Woman(Weapon weapon) {super(weapon);}@Overridepublic void todoSomething() {weapon.attack();} }Gun.java
package cn.example;public class Gun implements Weapon {private String name;private Integer value;private Integer scope;public Gun(String name, Integer value, Integer scope) {this.name = name;this.value = value;this.scope = scope;}public void attack() {System.out.println(this + ", name:" + name + ", value:" + value + ", scope:" + scope);} }Sword.java
package cn.example;public class Sword implements Weapon {private String name;private Integer value;private Integer scope;public Sword(String name, Integer value, Integer scope) {this.name = name;this.value = value;this.scope = scope;}public void attack() {System.out.println(this + ", name:" + name + ", value:" + value + ", scope:" + scope);} }這里的Main函數是這樣的:
package cn.example;public class Main {public static void main(String[] args) {System.out.println("start ...... ...... ......");System.out.println("Jack和Tom一人一把黃金裝備");Sword gold_sword = new Sword("Gold Sword", 100, 2);Gun gold_gun = new Gun("Gold Sword", 80, 6);Person Jack = new Man(gold_sword);Person Tom = new Man(gold_gun);Jack.todoSomething();Tom.todoSomething();System.out.println("來了一個不帶裝備的女士");Person Sofia = new Woman(null);Sofia.changeWeapon(gold_sword);System.out.println("換上了黃金劍");Sofia.todoSomething();System.out.println("換上了黃金槍");Sofia.changeWeapon(gold_gun);Sofia.todoSomething();System.out.println("end ...... ..... ......");} }程序運行截圖如下:
模擬的是這樣的一個場景,有一個名叫jack的男人,他帶有一把黃金劍,有一個名叫Tom的男人,他有一把黃金槍,現在有多了個叫Sofia的女人,她什么武器都沒有,但她可以用黃金劍和黃金槍。
?
源碼打包下載地址:
https://github.com/fengfanchen/Java/tree/master/JavaBridge
?
總結
以上是生活随笔為你收集整理的Java笔记-Java中桥接模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL工作笔记-达梦7存储过程中游标的使
- 下一篇: Spring Boot笔记-@PathV